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:

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