總結下List和Map遍歷方式(日常總結)
阿新 • • 發佈:2018-11-12
一.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); } } }