1. 程式人生 > >總結下List和Map遍歷方式(日常總結)

總結下List和Map遍歷方式(日常總結)

一.Map  

  public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        map.put(1, 2);
        map.put(3, 4);
        //1.鍵值一起取entrySet
        for (Map.Entry<Integer, Integer> entry : map.entrySet()){
        System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
        }
        //2.for 鍵keySet 值values 分開取
        for (Integer key : map.keySet()){
            System.out.println("key = " + key);
        }
        for(Integer value : map.values()){
            System.out.println("value = " + value);
        }
        //3.Iterator 遍歷
        Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
        while(entries.hasNext()){
            Map.Entry<Integer, Integer> entry = entries.next();
            System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
        }
        //4.Iterator 遍歷 不使用泛型
        Iterator entries1 = map.entrySet().iterator();
        while(entries1.hasNext()){
            Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) entries1.next();
            System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
        }
        //5.鍵值查詢
        for (Integer key : map.keySet()){
            System.out.println("key = " + key + ", value = " + map.get(key));
        }
        //6.Lambda表示式 (Java8特性,效能比entrySet低,不建議使用)
        map.forEach((key, value) -> {
            System.out.println(key + ":" + value);
        });
    }

總結:


1.只是獲取key,value,用keySet,values方式
2.同時獲取key和value,用entrySet
3.foreach比Iterator的寫法看起來更簡潔,但用foreach遍歷map時,如果改變其大小,會報錯,但如果只是刪除元素,可以使用Iterator的remove方法刪除元素
4.如果需要在遍歷過程中增加元素,可以新建一個臨時map存放新增的元素,等遍歷完畢,再把臨時map放到原來的map中。

二.List

public class Demo {

 public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        //1.for迴圈
        for (Integer Integer : list) {
            System.out.println(Integer);
        }
        //2.size()的for,對於陣列實現的arrayList比較快
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //3.Iterator迭代器
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = (Integer)iterator.next();
            System.out.println(integer);
        }
    }
}