You need to enable JavaScript to run this app. Kotlin的take()方法对应的Java等价实现是什么?
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 18:09:02