Kotlin的take()方法对应的Java等价实现是什么?
Kotlin
take() 方法的Java等价实现 Kotlin的take(n)方法会返回集合前n个元素构成的新集合,若原集合元素数量不足n则返回全部元素,Java没有内置的同名API,可通过以下两种方式实现:
方案1:Java 8及更高版本(Stream API实现)
// 取前n个元素的通用方法 public static <T> ArrayList<T> take(List<T> list, int n) { return list.stream() .limit(n) .collect(Collectors.toCollection(ArrayList::new)); }
方案2:兼容所有Java版本(手动截取)
public static <T> ArrayList<T> take(List<T> list, int n) { int takeSize = Math.min(n, list.size()); ArrayList<T> result = new ArrayList<>(takeSize); for (int i = 0; i < takeSize; i++) { result.add(list.get(i)); } return result; }
结合记忆卡牌游戏场景的完整实现示例
配对卡牌游戏需要每个图片出现两次,以下是适配任意卡牌数量的完整逻辑:
// 原始drawable列表代码 ArrayList<Integer> drawables = new ArrayList<>(); drawables.add(R.drawable.ic_face); drawables.add(R.drawable.ic_flash); drawables.add(R.drawable.ic_flower); drawables.add(R.drawable.ic_gift); drawables.add(R.drawable.ic_heart); drawables.add(R.drawable.ic_house); drawables.add(R.drawable.ic_moon); drawables.add(R.drawable.ic_plane); drawables.add(R.drawable.ic_school); drawables.add(R.drawable.ic_send); drawables.add(R.drawable.ic_star); drawables.add(R.drawable.ic_work); // 先打乱原始drawable列表,实现随机选图 Collections.shuffle(drawables); // 替换为你实际的卡牌数量,必须为偶数 int cardCount = 12; // 取对应数量的图片,每个图片需要出现两次所以除以2 ArrayList<Integer> selectedDrawables = take(drawables, cardCount / 2); // 每个图片添加两份,生成最终的卡牌列表 ArrayList<Integer> finalCardDrawables = new ArrayList<>(); finalCardDrawables.addAll(selectedDrawables); finalCardDrawables.addAll(selectedDrawables); // 打乱最终卡牌顺序,完成游戏初始化 Collections.shuffle(finalCardDrawables);
内容的提问来源于stack exchange,提问作者Mohamed Saeed
相关产品推荐
相关产品推荐

