成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

List&Map&Set的操作和遍歷

lavnFan / 590人閱讀

摘要:的操作和遍歷的三大集合即。的實(shí)現(xiàn)類(lèi)原理比較簡(jiǎn)單,比較復(fù)雜,而其實(shí)是基于的一種實(shí)現(xiàn)。

List&Map&Set的操作和遍歷

Java的三大集合即:Set、List、Map。

Set:代表無(wú)序、不可重復(fù)的集合,常用的有HashSet(哈希表實(shí)現(xiàn))、TreeSet(紅黑樹(shù)實(shí)現(xiàn));

List:代表有序、可以重復(fù)的集合,比較常用的有ArrayList(數(shù)組實(shí)現(xiàn))、LinkedList(鏈表實(shí)現(xiàn));

Map:代表具有映射關(guān)系的集合,常用的有HashMap(哈希表實(shí)現(xiàn))、TreeMap(紅黑樹(shù)實(shí)現(xiàn));

Java5以后又增加了Queue體系集合,代表一種隊(duì)列集合實(shí)現(xiàn),這里先不介紹。

List的實(shí)現(xiàn)類(lèi)原理比較簡(jiǎn)單,Map比較復(fù)雜,而Set其實(shí)是基于Map的一種實(shí)現(xiàn)。

下面從各個(gè)集合的基本操作介紹一下,分別選取HashSet、ArrayList、HashMap三個(gè)典型的實(shí)現(xiàn)類(lèi):

1. HashSet
/** 
 * HashSet的增刪遍歷
 * @author wangjun 
 * @email  [email protected]
 * @time   2018年4月6日 下午2:40:33 
 */
public class HashSetOperation {

    public static void main(String[] args) {
        //初始化
        HashSet 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 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);
        }
    }

運(yùn)行結(jié)果:

HashSet遍歷1,使用Iterator:
key2
key3
HashSet遍歷2,使用for:
key2
key3
2.ArrayList
/** 
 * ArrayList的增刪查改,遍歷
 * @author wangjun 
 * @email  [email protected]
 * @time   2018年4月6日 下午2:25:43 
 */
public class ArrayListOperation {

    public static void main(String[] args) {
        //初始化
        List list = new ArrayList<>();
        //增
        list.add("str1");
        list.add("str2");
        list.add("str3");
        //刪
        list.remove(1);
        //查
        System.out.println("list的第二個(gè)元素是:" + 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,使用增強(qiáng)for
        System.out.println("LinkedList遍歷1,使用增強(qiáng)for:");
        for(String str: list) {
            System.out.println(str);
        }
        //遍歷3,使用Iterator,集合類(lèi)的通用遍歷方式
        System.out.println("LinkedList遍歷3,使用Iterator:");
        Iterator it = list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }

}

運(yùn)行結(jié)果:

list的第二個(gè)元素是:str3
最終的list:[str11, str3]
LinkedList遍歷1,使用for:
str11
str3
LinkedList遍歷1,使用增強(qiáng)for:
str11
str3
LinkedList遍歷3,使用Iterator:
str11
str3
3.HashMap
/** 
 * hashMap的增刪查改
 * 無(wú)序
 * key相當(dāng)于set,不可重復(fù)
 * value相當(dāng)于list,可重復(fù)
 * @author wangjun 
 * @email  [email protected]
 * @time   2018年4月6日 下午2:30:31 
 */
public class HashMapOperation {

    public static void main(String[] args) {
        //初始化
        HashMap map = new HashMap<>();
        //增
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        //刪
        map.remove("key2");
        //查
        System.out.println("key1對(duì)應(yīng)的valve為:" + map.get("key1"));
        //改
        map.replace("key3", "value33");
        System.out.println("最終的map是:" + map.toString());
        //遍歷1,取出map中所有的key組成一個(gè)set
        System.out.println("HashMap遍歷1,取出map中所有的key組成一個(gè)set:");
        for(String key: map.keySet()) {
            System.out.println("key:" + key + ",value:" + map.get(key));
        }
        //遍歷2,取出key組成set后,通過(guò)Iterator遍歷key
        System.out.println("HashMap遍歷2,取出key組成set后,通過(guò)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中實(shí)際存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)--Map.Entry,在HashMap中使用的是Node靜態(tài)內(nèi)部類(lèi)
        //推薦這種,尤其是數(shù)據(jù)很大時(shí)
        System.out.println("HashMap遍歷3,通過(guò)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,相當(dāng)于取出map中左右的value組成一個(gè)list
        System.out.println("HashMap遍歷4,只遍歷value:");
        for(String value: map.values()) {
            System.out.println("value:" + value);
        }
    }

}

運(yùn)行結(jié)果:

key1對(duì)應(yīng)的valve為:value1
最終的map是:{key1=value1, key3=value33}
HashMap遍歷1,取出map中所有的key組成一個(gè)set:
key:key1,value:value1
key:key3,value:value33
HashMap遍歷2,取出key組成set后,通過(guò)Iterator遍歷key:
key:key1,value:value1
key:key3,value:value33
HashMap遍歷3,通過(guò)Map.Entry:
key:key1,value:value1
key:key3,value:value33
HashMap遍歷4,只遍歷value:
value:value1
value:value33

可以看到:

遍歷Set一般常用2種方式;

遍歷List一般常用3種方式;

遍歷Map一般常用4種方式;

根據(jù)使用場(chǎng)景,選擇合適的遍歷方式。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68967.html

相關(guān)文章

  • [LintCode] Topological Sorting [BFS &amp; DFS]

    摘要:當(dāng)隊(duì)列非空時(shí),拿出最后放入的元素。若減后入度為,則這個(gè)結(jié)點(diǎn)遍歷完成,放入結(jié)果數(shù)組和隊(duì)列。遞歸函數(shù)去遍歷的,繼續(xù)在中標(biāo)記,使得所有點(diǎn)只遍歷一次。最深的點(diǎn)最先,根結(jié)點(diǎn)最后,加入結(jié)果數(shù)組的頭部處。 Problem Given an directed graph, a topological order of the graph nodes is defined as follow: For ...

    draveness 評(píng)論0 收藏0
  • Java編程基礎(chǔ)19——Map集合&amp;斗地主案例

    摘要:使用默認(rèn)隨機(jī)源對(duì)指定列表進(jìn)行置換。將集合排序使用二分搜索法搜索指定列表,以獲得指定對(duì)象根據(jù)元素的自然順序,返回給定的最大元素。 1_Map集合概述和特點(diǎn) A:Map接口概述 查看API可以知道: 將鍵映射到值的對(duì)象 一個(gè)映射不能包含重復(fù)的鍵 每個(gè)鍵最多只能映射到一個(gè)值 B:Map接口和Collection接口的不同 Map是雙列的,Collection是單列的 Map...

    ygyooo 評(píng)論0 收藏0
  • 六個(gè)Python編程最受用內(nèi)置函數(shù)使用詳解

      小編寫(xiě)這篇文章的話,主要是給大家做出一個(gè)解答,解答一些Python常見(jiàn)問(wèn)題,比如關(guān)于編程函數(shù)的一些問(wèn)題,哪些函數(shù)編程是最受用的呢?下面就給大家詳細(xì)介紹一下。  合理的使用Python這門(mén)工具,能夠大大的提高其工作效率,起到事半功倍的作用?! ?.Map函數(shù)  map函數(shù)可以使用另外一個(gè)函數(shù)轉(zhuǎn)換整個(gè)可迭代對(duì)象的函數(shù),包括將字符串轉(zhuǎn)換為數(shù)字、數(shù)字的四舍五入等等?! ≈允褂胢ap函數(shù)來(lái)完成這些事...

    89542767 評(píng)論0 收藏0
  • JavaScript字典與集合詳解

      今天和大家講講JS字典。所謂的JS字典其實(shí)和顯示中常用漢語(yǔ)字典不一樣,編程中的字典類(lèi)似,兩者都有一個(gè)特點(diǎn),就是一一對(duì)應(yīng)(yi yi dui ying),或者說(shuō)是映射?! ∪粘V械淖值渫ǔR?*【鍵,值】** 對(duì)的形成存儲(chǔ),主要是由于以鍵值對(duì)的形式存儲(chǔ),這樣的話更有利于可以通過(guò)key來(lái)獲取value  比如存儲(chǔ)用戶信息:  {   'username':'一碗周'...

    3403771864 評(píng)論0 收藏0
  • Set &amp; Map:新生數(shù)據(jù)集合及其弱引用衍生

    摘要:前言新增了兩種基本的原生數(shù)據(jù)集合和加上和現(xiàn)在共有四種,以及由兩者衍生出的弱引用集合和。其本身是生成實(shí)例數(shù)據(jù)集合的構(gòu)造函數(shù),可以接受一個(gè)數(shù)組或具有接口的數(shù)據(jù)結(jié)構(gòu)作為參數(shù)用來(lái)初始化。返回鍵值對(duì)的遍歷器對(duì)象,鍵值對(duì)為鍵名鍵值。 前言 ES6新增了兩種基本的原生數(shù)據(jù)集合:Set和Map(加上Array和Object現(xiàn)在共有四種),以及由兩者衍生出的弱引用集合:WeakSet和WeakMap。從...

    AprilJ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<