Java 我应该选择I>;1或i>;=1用于随机洗牌

Java 我应该选择I>;1或i>;=1用于随机洗牌,java,arraylist,random,collections,Java,Arraylist,Random,Collections,我正在尝试以随机方式洗牌整数数组列表。我已经想出了下面的代码。不过,我怀疑这是否正确的做法。我在某个地方读到过关于(int I=list.size();I>=1;I--)的forin: public static void shuffling(List<?> list, Random rnd){ for(int i = list.size(); i >= 1; i--){ swap(list, i - 1, rnd.nextInt(i)); }

我正在尝试以随机方式洗牌整数数组列表。我已经想出了下面的代码。不过,我怀疑这是否正确的做法。我在某个地方读到过关于(int I=list.size();I>=1;I--)的
for
in:

public static void shuffling(List<?> list, Random rnd){
    for(int i = list.size(); i >= 1; i--){
        swap(list, i - 1, rnd.nextInt(i));
    }
}
但是,如果我选择将它写成
I>1
,而不是
I>=1
,我不是忽略了数组列表中的第一项吗?有人对解决这个问题的正确方法有什么建议吗

我的代码:

public class TheCollectionInterface {

    public static <E> void swap(List<E> a, int i, int j){
        E temp = a.get(i);
        a.set(i, a.get(j));
        a.set(j, temp);
    }

    public static void shuffling(List<?> list, Random rnd){
        for(int i = list.size(); i >= 1; i--){
            swap(list, i - 1, rnd.nextInt(i));
        }
    }

    public static void main(String[] args) {

        List<Integer> li1 = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9));

        Random r1 = new Random();

        TheCollectionInterface.shuffling(li1, r1);

        System.out.println(li1);
    }
}
public类集合接口{
公共静态无效交换(列表a、int i、int j){
E温度=a.get(i);
a、 set(i,a.get(j));
a、 设置(j,温度);
}
公共静态无效洗牌(列表、随机rnd){
对于(int i=list.size();i>=1;i--){
掉期(清单,i-1,rnd.nextInt(i));
}
}
公共静态void main(字符串[]args){
List li1=新的ArrayList(Arrays.asList(1,2,3,4,5,6,7,8,9));
Random r1=新的Random();
collectioninterface.shuffling(li1,r1);
系统输出打印Ln(li1);
}
}

在这个循环中,当
i=1
时,唯一要选择的元素是第0个元素,将第0个元素与第0个元素交换很简单,不会产生任何效果。因此,您不需要使用
i=1
进入循环,您可以编写
i>1
作为条件。

存在
集合。当然,如果您不想滚动自己的集合,可以使用shuffle

public class TheCollectionInterface {

    public static <E> void swap(List<E> a, int i, int j){
        E temp = a.get(i);
        a.set(i, a.get(j));
        a.set(j, temp);
    }

    public static void shuffling(List<?> list, Random rnd){
        for(int i = list.size(); i >= 1; i--){
            swap(list, i - 1, rnd.nextInt(i));
        }
    }

    public static void main(String[] args) {

        List<Integer> li1 = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9));

        Random r1 = new Random();

        TheCollectionInterface.shuffling(li1, r1);

        System.out.println(li1);
    }
}