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

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

核心代码如下:

1、判断的方法

    /**
     * 使用一个List来保存数组,每次随机取出一个移除一个。
     */
    public Integer[] getRandomArray(int n, Integer[] strArray) {
        List list = new ArrayList();
        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 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);

你可能感兴趣的:(Android 中从一个集合或者数组中随机抽取几个不同的值)