這是一個示例代碼,尋找一般化的解決方案。如何複製迭代器對象?
List<String> names = new ArrayList<String>();
for(int i=0; i<names.size()-1; i++){
for(int j=i+1; j<names.size(); j++){
if(names.get(i) == names.get(j)) {
//return true;
}
}
}
我想通過增強的for-loop替換上面的for-loop。 因此嘗試過這樣的嘗試。 上述替換for循環迭代通過:
String name;
Iterator<String> itr2;
Iterator<String> itr1 = names.iterator();
while(itr1.hasNext()) {
// for(name=itr1.next(); itr1.hasNext();) {
name = itr1.next(); // iterating itr1
itr2 = itr1;
while(itr2.hasNext()){
if(name.equalsIgnoreCase(itr2.next())) { // iterating itr2
return true;
}
}
}
我們迭代itr2但ITR1也在發生變化。這是因爲確定了itr1 = itr2。是否有可能複製迭代器對象而不是分配? 而不是迭代器任何其他邏輯也歡迎。
謝謝。
也許創建一個新的數組,然後重新分配?你用什麼java版本? – LazerBanana
請注意,您的第二個代碼段不使用增強功能,除此之外,您需要在列表中使用'subList()'。 – Thomas
你爲什麼要更換它?您在第一個代碼中依賴於索引,內部循環基於外部循環的索引。增強的循環或迭代器不提供索引值,所以你只是在沒有的情況下創建一個問題。 – f1sh