2016-02-26 53 views
1

计数是一个int值用户输入。以下示例中计数为5。如何从shuffled arrayList(int)中收集/比较数据?

ArrayList<Integer> newArray = new ArrayList<>(); 

for (int i =0; i< count; i++){ 
    newArray.add(i); 

} 

for (int j =0; j<=3; j++){ 
    Collections.shuffle(newArray); 
    System.out.println(newArray.toString()); 
} 

输出:

Shuffle Array 
[2, 1, 0, 3, 4] 
[4, 1, 2, 3, 0] 
[1, 4, 2, 3, 0] 
[4, 3, 2, 1, 0] 

现在,如果我出去外面的ArrayList的for循环,我只得到了最后一个阵列:

[4, 3, 2, 1, 0] 

如何访问前一阵,当你'在循环之外洗牌吗?

我猜不可能在循环之外做到这一点? 有关如何访问这些值小阵列的示例将不胜感激。

+0

哪个洗牌阵列的版本,你需要什么? –

+0

我需要所有这些数据,因为我试图收集一个特定数字比如第5列出现多少次,然后第2列出现多少次3等数据。 – rated2016

回答

1

只需将洗牌结果内的另一个ArrayList

int count = 5; 
ArrayList<ArrayList<Integer>> shuffledArrays = new ArrayList<>(); 

for (int j = 0; j <= 3; j++){ 
    ArrayList<Integer> newArray = new ArrayList<>(); 

    for (int i = 0; i < count; i++){ 
     newArray.add(i); 
    } 

    Collections.shuffle(newArray); 
    shuffledArrays.add(newArray); 
} 

for (int j = 0; j <= 3; j++) { 
    System.out.println(shuffledArrays.get(j).toString()); 
} 
0

可以存储每个洗牌ArrayListList

List<List<Integer>> list = new ArrayList<ArrayList<Integer>>(); 

// create the original list only once 
ArrayList<Integer> oldArray = new ArrayList<>(); 
for (int i =0; i< count; i++){ 
    oldArray.add(i); 
} 

// shuffle original list and store each one 
for (int j=0; j < 3; ++j) { 
    List<Integer> newArray = new ArrayList<Integer>(oldArray); 
    Collections.shuffle(newArray); 
    list.add(newArray); 
    System.out.println(newArray.toString()); 
}