Java中如何遍歷List , Set, Map
- 2020 年 3 月 11 日
- 筆記
Java中 List , Set 有共同的父類, 就是Collection. 所有實現Collection的介面的類都有一個iterator方法,用以返回一個Iterator介面的對象.
Iterator 介面定義如下:
Boolean hasNext(); //判斷是否有元素沒有被遍歷
Object next(); //返回遊標當前位置的元素並將游標移動到下一個位置
void remove(); //刪除游標左邊的元素, 在執行完成next() 後該操作只能執行一次

兩者區別是:
List允許重複元素, 存儲是有序的, 即元素插入和讀取的順序是一致的.
Set不允許有相同的元素存在, 存儲是無序的, 也就是插入的元素順序和讀取出來的元素順序會不一致.
List ,Set , Map 下的子類:
Collection ├List │├LinkedList │├ArrayList │└Vector └Set |-HashSet └TreeSet Map ├Hashtable ├HashMap └WeakHashMap
子類的區別諸如 實現方式, 是否執行緒安全等等, 這裡就不展開介紹了.
Map 是獨立的集合, 採用鍵值對來存儲數據也就是key-value的雙列形式, 特點是鍵不能重複, 值可以重複.
讓我們來看下遍歷的方式有哪些:
使用Intellij IDE 環境, Maven 中配置文件pom.xml添加testng
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.0.0</version> </dependency>
創建utl package, 並新建一個ListDemo.java
package utl; import org.testng.annotations.Test; import java.util.Map.Entry; import java.util.*; public class ListDemo { @Test public void testList(){ System.out.println("--------遍歷list--------"); //遍歷List List list=new ArrayList(); list.add("張三"); list.add("李四"); list.add("王五"); list.add("趙六"); //foreach 循環, 遍歷列表 for(Object str : list ){ System.out.println("forEach: "+ str); } //通過Iterator 迭代器遍歷列表+"/n" Iterator it=list.iterator(); while (it.hasNext()){ String str=(String) it.next(); System.out.println("迭代器: "+str); } // for循環 遍歷列表, ArrayList 查詢速度是比較快的, 循環條件是size for(int i=0;i<list.size();i++){ System.out.println("for循環: "+list.get(i)); } //Lambda list.forEach(str->{ System.out.print("Lambda 遍歷 : "+str +" "); }); System.out.println("n"); System.out.println("--------遍歷Set--------"); //遍歷set Set set= new HashSet(); set.add("1點"); set.add("2點"); set.add("3點"); //方式一 Iterator i= set.iterator(); while(i.hasNext()){ System.out.println("set 迭代器: "+i.next()); } //方式二 for (Iterator iter=set.iterator();iter.hasNext();){ System.out.println("for循環迭代: "+iter.next()); } System.out.println("--------遍歷Map--------"); //遍歷map Map map=new HashMap(); map.put("1","java"); map.put("2","python"); map.put("3","C#"); //方式一 Set keys=map.keySet(); for(Iterator iterator=keys.iterator();iterator.hasNext();){ //String keyStr=(String) iterator.next(); System.out.println("map 遍歷"+map.get(iterator.next())); } //方式二 Set s1=map.entrySet(); for(Iterator iter=s1.iterator();iter.hasNext();){ Entry e=(Entry)iter.next(); System.out.println("map Entry "+e.getKey()+"----"+ e.getValue());; } } }
我們來看下執行結果:

Story:
人要有一個奮鬥目標,這樣活起來才有精神,有奔頭。整天無所事事、無聊至極的,就是因為沒有目標。從小就要為自己的人生制定一個目標,然後不斷地向它靠近,終有一天你會達到這個目標。如果從小就糊裡糊塗,對自己的人生不負責任,沒有目標沒有方向,那這一生也難有作為。每個人出門,都會有自己的目的地,如果不知道自己要去哪裡,漫無目的地閑逛,那速度就會很慢;但當你清楚你自己要去的地方,你的步履就會情不自禁地加快。如果你分辨不清自己所在的方位,你會茫然若失;一旦你弄清了自己要去的方向,你會精神抖擻。這就是目標的力量。所以說,一個人有了目標,才會成功。