摘要:的操作和遍歷的三大集合即。的實現類原理比較簡單,比較復雜,而其實是基于的一種實現。
List&Map&Set的操作和遍歷
Java的三大集合即:Set、List、Map。
Set:代表無序、不可重復的集合,常用的有HashSet(哈希表實現)、TreeSet(紅黑樹實現);
List:代表有序、可以重復的集合,比較常用的有ArrayList(數組實現)、LinkedList(鏈表實現);
Map:代表具有映射關系的集合,常用的有HashMap(哈希表實現)、TreeMap(紅黑樹實現);
Java5以后又增加了Queue體系集合,代表一種隊列集合實現,這里先不介紹。
List的實現類原理比較簡單,Map比較復雜,而Set其實是基于Map的一種實現。
下面從各個集合的基本操作介紹一下,分別選取HashSet、ArrayList、HashMap三個典型的實現類:
1. HashSet/** * HashSet的增刪遍歷 * @author wangjun * @email scuwangjun@hotmail.com * @time 2018年4月6日 下午2:40:33 */ public class HashSetOperation { public static void main(String[] args) { //初始化 HashSetset = new HashSet<>(); //增 set.add("key1"); set.add("key2"); set.add("key3"); //刪 set.remove("key1"); //遍歷1 //使用set.descendingIterator()方法可以反向遍歷 System.out.println("HashSet遍歷1,使用Iterator:"); Iterator 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); } }
運行結果:
HashSet遍歷1,使用Iterator: key2 key3 HashSet遍歷2,使用for: key2 key32.ArrayList
/** * ArrayList的增刪查改,遍歷 * @author wangjun * @email scuwangjun@hotmail.com * @time 2018年4月6日 下午2:25:43 */ public class ArrayListOperation { public static void main(String[] args) { //初始化 Listlist = 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 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 str33.HashMap
/** * 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) { //初始化 HashMapmap = 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 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 > entry = map.entrySet(); for(Map.Entry 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); } } }
運行結果:
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
可以看到:
遍歷Set一般常用2種方式;
遍歷List一般常用3種方式;
遍歷Map一般常用4種方式;
根據使用場景,選擇合適的遍歷方式。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68967.html
摘要:當隊列非空時,拿出最后放入的元素。若減后入度為,則這個結點遍歷完成,放入結果數組和隊列。遞歸函數去遍歷的,繼續在中標記,使得所有點只遍歷一次。最深的點最先,根結點最后,加入結果數組的頭部處。 Problem Given an directed graph, a topological order of the graph nodes is defined as follow: For ...
摘要:使用默認隨機源對指定列表進行置換。將集合排序使用二分搜索法搜索指定列表,以獲得指定對象根據元素的自然順序,返回給定的最大元素。 1_Map集合概述和特點 A:Map接口概述 查看API可以知道: 將鍵映射到值的對象 一個映射不能包含重復的鍵 每個鍵最多只能映射到一個值 B:Map接口和Collection接口的不同 Map是雙列的,Collection是單列的 Map...
小編寫這篇文章的話,主要是給大家做出一個解答,解答一些Python常見問題,比如關于編程函數的一些問題,哪些函數編程是最受用的呢?下面就給大家詳細介紹一下。 合理的使用Python這門工具,能夠大大的提高其工作效率,起到事半功倍的作用?! ?.Map函數 map函數可以使用另外一個函數轉換整個可迭代對象的函數,包括將字符串轉換為數字、數字的四舍五入等等。 之所以使用map函數來完成這些事...
今天和大家講講JS字典。所謂的JS字典其實和顯示中常用漢語字典不一樣,編程中的字典類似,兩者都有一個特點,就是一一對應(yi yi dui ying),或者說是映射。 日常中的字典通常以**【鍵,值】** 對的形成存儲,主要是由于以鍵值對的形式存儲,這樣的話更有利于可以通過key來獲取value 比如存儲用戶信息: { 'username':'一碗周'...
摘要:前言新增了兩種基本的原生數據集合和加上和現在共有四種,以及由兩者衍生出的弱引用集合和。其本身是生成實例數據集合的構造函數,可以接受一個數組或具有接口的數據結構作為參數用來初始化。返回鍵值對的遍歷器對象,鍵值對為鍵名鍵值。 前言 ES6新增了兩種基本的原生數據集合:Set和Map(加上Array和Object現在共有四種),以及由兩者衍生出的弱引用集合:WeakSet和WeakMap。從...
閱讀 1384·2021-09-24 10:26
閱讀 1695·2019-08-30 14:14
閱讀 2105·2019-08-29 16:54
閱讀 367·2019-08-29 14:09
閱讀 1477·2019-08-29 12:55
閱讀 930·2019-08-28 18:13
閱讀 1582·2019-08-26 13:39
閱讀 2566·2019-08-26 11:43