程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-TreeSet的Iterator遍歷問題

java-TreeSet的Iterator遍歷問題

編輯:編程綜合問答
TreeSet的Iterator遍歷問題

TreeSetset = new TreeSet();
set.add("one1");
set.add("two1");
set.add("three1");
for(Iterator it =set.iterator();it.hasNext();)
{
String str = it.next();
System.out.println(str);
if(str.equals("three1")){
set.remove(str);
}
}

        我看一本書上面說當遍歷到最後一個元素時,集合的遍歷已經完成。此時操作Set集合不會引起ConcurrentModificationException異常,但為什麼我輸了一下就發生了這個異常

最佳回答:


使用TreeSet要求集合元素必須是可以比較大小的,保證Set裡添加的元素後是“大小排序”的。
比較大小主要有兩種方式:
A. 自然排序。所有集合元素要實現Comparable接口。
B. 定制排序。要求創建TreeSet時,提供一個Comparator對象(負責比較元素大小)。
這裡set裡面的元素為String類型,而String是實現了Comparable接口的,所以這裡可以直接用,很顯然o<t, h<w;所以打印結果:one1、three1、two1; 而你在遍歷迭代過程中刪除了中間元素three1,導致迭代器在遍歷最後一個元素時拋出異常。
個人建議:除非有特殊需要,否則最好不要在迭代的過程中刪除元素,以免引發不必要的異常。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved