Android 中从一个集合或者数组中随机抽取几个不同的值

从一个集合或者数组中随机抽取几个不同的值,不同的开发者应该有不同的实现方式,我这里说一下我这边项目中用到的一种实现方法

核心代码如下:

1、判断的方法

    /**
     * 使用一个List来保存数组,每次随机取出一个移除一个。
     */
    public Integer[] getRandomArray(int n, Integer[] strArray) {
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i < strArray.length; i++) {
            list.add(strArray[i]);
        }
        Random random = new Random();

        // 当取出的元素个数大于数组的长度时,返回null
        if (n > list.size()) {
            return null;
        }

        Integer[] result = new Integer[n];
        for (int i = 0; i < n; i++) {
            // 去一个随机数,随机范围是list的长度
            int index = random.nextInt(list.size());
            result[i] = list.get(index);
            list.remove(index);
        }
        return result;
    }
2、使用方式
    //创建一个集合来存放可以获取的值
    private ArrayList<Integer> canSelectIntArr = new ArrayList<>();

    private Integer[] canSelectIntStrs = null;


 /**
     * 初始化可以可以选择的动作数
     */
    private void initCanSelectIntsArr() {
        canSelectIntArr.clear();
        canSelectIntArr.add(0);
        canSelectIntArr.add(1);
        canSelectIntArr.add(2);
        canSelectIntArr.add(3);

        canSelectIntStrs =  new Integer[canSelectIntArr.size()];

        for (int i = 0; i < canSelectIntArr.size(); i++) {
            canSelectIntStrs[i] = canSelectIntArr.get(i);
        }
    }

//最终调用
 Integer[] randomArray = getRandomArray(actionAmount, canSelectIntStrs);
    原文作者:追梦小乐
    原文地址: https://www.jianshu.com/p/b48c7f860210
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞