Java:在shuffle中排除数组索引

是否可以在shuffle中排除数组索引?

我对这个问题的见解:

Array[0,1,2,3,4,5,6,7,8] Exclude Array index 2 and 7 in shuffle. Shuffle Array. Array[3,5,2,1,6,8,0,7,4] 

这是我在洗牌中使用的内容:

 Listlist = Arrays.asList(pkm); Collections.shuffle(list); 

编辑:

谢谢,@ Jhanvi! 我研究了你的代码,它给了我一些想法。 我试着玩你和@Rohit Jain的代码并创建了一个样本:

 import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.ArrayList; public class Example { public static void main(String[]args){ String[] x = {"a","b","c","d","e","f","g","h"}; List list = new ArrayList(Arrays.asList(x)); System.out.println("Before shuffling, ArrayList contains : " + list); Object obj = list.remove(7); Object obj1 = list.remove(2); Collections.shuffle(list); list.add(2, obj1); list.add(7, obj); System.out.println("After shuffling, ArrayList contains : " + list); } } 

令人讨厌的是它给了我一个错误:在我的list.add()上找不到符号方法add(int,java.lang.Object)。

我检查了.add(int,Object)中是否存在.add(int,Object)方法,认为它会起作用。 我错过了哪一部分?

你可以尝试这样的事情:

 ArrayList arrayList = new ArrayList(); arrayList.add(0); arrayList.add(1); arrayList.add(2); arrayList.add(3); arrayList.add(4); arrayList.add(5); arrayList.add(6); arrayList.add(7); System.out.println("Before shuffling, ArrayList contains : " + arrayList); Object obj = arrayList.remove(7); // remove by index! Object obj1 = arrayList.remove(2); Collections.shuffle(arrayList); arrayList.add(2, obj1); arrayList.add(7, obj); System.out.println("After shuffling, ArrayList contains : " + arrayList); 

您可以自己创建一个shuffle:只需随机选择两个索引,确保排除要排除的索引,并在这些位置交换数组元素。 重复足够的次数。