HashSet<Set<Set<int[]>>> Sa=new HashSet<Set<Set<int[]>>>();
現在,我需要打印Sa.using單一迭代器,我無法打印如何在java中打印一組套件?
Iterator<Set<Set<int[]>>> iter = Sa.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
這是行不通的
HashSet<Set<Set<int[]>>> Sa=new HashSet<Set<Set<int[]>>>();
現在,我需要打印Sa.using單一迭代器,我無法打印如何在java中打印一組套件?
Iterator<Set<Set<int[]>>> iter = Sa.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
這是行不通的
首先,你不應該使用Generic類的基本數據類型,如int
。因此代替int[]
使用List<Integer>
。
現在,如果你真的只是想用一個Iterator
那麼你可以使用這樣的一羣for-each
循環 -
for (Set<Set<List<Integer>>> aSa : Sa) {
for (Set<List<Integer>> bSa : aSa) {
Iterator<List<Integer>> iter = bSa.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
}
完整的測試代碼 -
HashSet<Set<Set<List<Integer>>>> Sa = new HashSet<>();
// Creating dummy data
// Two List of Integers
List<Integer> listInt1 = new ArrayList<>();
List<Integer> listInt2 = new ArrayList<>();
// Populating the list
for (int i = 0; i < 4; i++) {
listInt1.add(i);
listInt2.add(i+30);
}
// Data structure of Sa.
Set<List<Integer>> setOfIntLists1 = new HashSet<>();
Set<List<Integer>> setOfIntLists2 = new HashSet<>();
setOfIntLists1.add(listInt1);
setOfIntLists1.add(listInt2);
setOfIntLists2.add(listInt2);
setOfIntLists2.add(listInt1);
Set<Set<List<Integer>>> setOfset1 = new HashSet<>();
Set<Set<List<Integer>>> setOfset2 = new HashSet<>();
setOfset1.add(setOfIntLists1);
setOfset1.add(setOfIntLists2);
setOfset2.add(setOfIntLists2);
setOfset2.add(setOfIntLists1);
// Adding data to Sa
Sa.add(setOfset1);
Sa.add(setOfset2);
for (Set<Set<List<Integer>>> aSa : Sa) {
for (Set<List<Integer>> bSa : aSa) {
Iterator<List<Integer>> iter = bSa.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
}
}
輸出
[0, 1, 2, 3]
[30, 31, 32, 33]
謝謝,它很有用:)@賽富 –
這,假設你有多個層級的Set
對象和你的數組,你必須遍歷每個級別。
Iterator<Set<Set<int[]>>> iter = Sa.iterator();
Iterator<Set<int[]>> innerIter;
Iterator<int[]> deepIter;
while (iter.hasNext()) {
innerIter = iter.next().iterator();
while(innerIter.hasNext()){
deepIter = innerIter.next().iterator();
while(deepIter.hasNext()){
System.out.println(Arrays.toString(deepIter.next()));
}
}
}
打印'int []'是個尷尬的時期。嘗試切換到「列表」。 –
你有三層套。您需要三個嵌套循環內的三個迭代器。爲什麼你堅持只使用一個迭代器? –
請不要用大寫來命名變量 - 這是一個非常糟糕的做法。大寫保留給類名稱。改爲使用CamelCase:[Java命名約定](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=java%20naming%20conventions) – pczeus