Java的三大集合即:Set、List、Map。java
Java5之後又增長了Queue體系集合,表明一種隊列集合實現,這裏先不介紹。shell
List的實現類原理比較簡單,Map比較複雜,而Set實際上是基於Map的一種實現。數組
下面從各個集合的基本操做介紹一下,分別選取HashSet、ArrayList、HashMap三個典型的實現類:數據結構
/** * HashSet的增刪遍歷 * @author wangjun * @email scuwangjun@hotmail.com * @time 2018年4月6日 下午2:40:33 */ public class HashSetOperation { public static void main(String[] args) { //初始化 HashSet<String> set = new HashSet<>(); //增 set.add("key1"); set.add("key2"); set.add("key3"); //刪 set.remove("key1"); //遍歷1 //使用set.descendingIterator()方法能夠反向遍歷 System.out.println("HashSet遍歷1,使用Iterator:"); Iterator<String> it = set.iterator(); while(it.hasNext()) { System.out.println(it.next()); } //遍歷2 System.out.println("HashSet遍歷2,使用for:"); for(String str: set) { System.out.println(str); } }
運行結果:code
HashSet遍歷1,使用Iterator: key2 key3 HashSet遍歷2,使用for: key2 key3
/** * ArrayList的增刪查改,遍歷 * @author wangjun * @email scuwangjun@hotmail.com * @time 2018年4月6日 下午2:25:43 */ public class ArrayListOperation { public static void main(String[] args) { //初始化 List<String> list = new ArrayList<>(); //增 list.add("str1"); list.add("str2"); list.add("str3"); //刪 list.remove(1); //查 System.out.println("list的第二個元素是:" + list.get(1)); //改 list.set(0, "str11"); System.out.println("最終的list:" + list.toString()); //遍歷1,使用for System.out.println("LinkedList遍歷1,使用for:"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //遍歷2,使用加強for System.out.println("LinkedList遍歷1,使用加強for:"); for(String str: list) { System.out.println(str); } //遍歷3,使用Iterator,集合類的通用遍歷方式 System.out.println("LinkedList遍歷3,使用Iterator:"); Iterator<String> it = list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
運行結果:隊列
list的第二個元素是:str3 最終的list:[str11, str3] LinkedList遍歷1,使用for: str11 str3 LinkedList遍歷1,使用加強for: str11 str3 LinkedList遍歷3,使用Iterator: str11 str3
/** * hashMap的增刪查改 * 無序 * key至關於set,不可重複 * value至關於list,可重複 * @author wangjun * @email scuwangjun@hotmail.com * @time 2018年4月6日 下午2:30:31 */ public class HashMapOperation { public static void main(String[] args) { //初始化 HashMap<String,String> map = new HashMap<>(); //增 map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); //刪 map.remove("key2"); //查 System.out.println("key1對應的valve爲:" + map.get("key1")); //改 map.replace("key3", "value33"); System.out.println("最終的map是:" + map.toString()); //遍歷1,取出map中全部的key組成一個set System.out.println("HashMap遍歷1,取出map中全部的key組成一個set:"); for(String key: map.keySet()) { System.out.println("key:" + key + ",value:" + map.get(key)); } //遍歷2,取出key組成set後,經過Iterator遍歷key System.out.println("HashMap遍歷2,取出key組成set後,經過Iterator遍歷key:"); Iterator<String> it = map.keySet().iterator(); while(it.hasNext()) { String key = it.next(); String value = map.get(key); System.out.println("key:" + key + ",value:" + value); } //遍歷3,取出map中實際存儲的數據結構--Map.Entry,在HashMap中使用的是Node靜態內部類 //推薦這種,尤爲是數據很大時 System.out.println("HashMap遍歷3,經過Map.Entry:"); Set<Map.Entry<String, String>> entry = map.entrySet(); for(Map.Entry<String, String> entryItem: entry) { String key = entryItem.getKey(); String value = entryItem.getValue(); System.out.println("key:" + key + ",value:" + value); } //遍歷4,只能遍歷value,不能遍歷key,至關於取出map中左右的value組成一個list System.out.println("HashMap遍歷4,只遍歷value:"); for(String value: map.values()) { System.out.println("value:" + value); } } }
運行結果:rem
key1對應的valve爲:value1 最終的map是:{key1=value1, key3=value33} HashMap遍歷1,取出map中全部的key組成一個set: key:key1,value:value1 key:key3,value:value33 HashMap遍歷2,取出key組成set後,經過Iterator遍歷key: key:key1,value:value1 key:key3,value:value33 HashMap遍歷3,經過Map.Entry: key:key1,value:value1 key:key3,value:value33 HashMap遍歷4,只遍歷value: value:value1 value:value33
能夠看到:get
遍歷Set通常經常使用2種方式;hash
遍歷List通常經常使用3種方式;it
遍歷Map通常經常使用4種方式;
根據使用場景,選擇合適的遍歷方式。