日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java map清除值为null的元素_Java中的集合框架大总结

發(fā)布時(shí)間:2024/9/27 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java map清除值为null的元素_Java中的集合框架大总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

直接上圖:

從上面的集合框架圖可以看到:Java集合框架主要包括兩種類型的容器,一種是集合(Collection),存儲(chǔ)一個(gè)元素集合;另一種是圖(Map),存儲(chǔ)鍵/值對(duì)映射。Collection接口又有兩個(gè)子接口,List和Set,再下面是一些抽象類,最后是具體實(shí)現(xiàn)類,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。

集合框架是一個(gè)用來(lái)代表和操縱集合的統(tǒng)一框架。所有的集合框架都包含如下內(nèi)容:

接口:是代表集合的抽象數(shù)據(jù)類型。例如:Collection、List、Set、Map等。之所以定義多個(gè)接口,是為了以不同的方式操作集合對(duì)象。

實(shí)現(xiàn)(類):是集合接口的具體實(shí)現(xiàn)。從本質(zhì)上講,它們是可重復(fù)使用的數(shù)據(jù)結(jié)構(gòu),例如:ArrayList、LinkedList、HashSet、HashMap。

除了集合,該框架也定義了幾個(gè)Map接口和類。Map里存儲(chǔ)的是鍵/值對(duì)。盡管Map不是集合,但是它們完全整合在集合中。Java集合框架提供了一套性能優(yōu)良,使用方便的接口和類,Java集合框架位于java.util包中,所以當(dāng)使用集合框架的時(shí)候需要進(jìn)行導(dǎo)包。

一、集合接口:

1.Collection

Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素,Java不提供直接繼承自Collection的類,只提供繼承于Collection的子接口(如List和Set),Collection接口存儲(chǔ)一組不唯一,沒(méi)有順序的對(duì)象。

2.List

List接口是一個(gè)有順序的Collection,使用此接口能夠精確地控制每個(gè)元素插入的位置,能夠通過(guò)索引(元素在List中的位置,類似于數(shù)組的下標(biāo))來(lái)訪問(wèn)List 中的元素,第一個(gè)元素的索引為0,而且允許有相同的元素。List接口存儲(chǔ)一組不唯一,有序(插入順序)的對(duì)象。

3.Set

Set具有與List完全一樣的接口,只是行為上不同,Set不保存重復(fù)的元素。Set接口存儲(chǔ)一組唯一,無(wú)序的對(duì)象。

4.Map

Map接口存儲(chǔ)一組鍵值對(duì)對(duì)象,提供key(鍵)到value(值)的映射。

5.Map.Entry

Map.Entry描述在一個(gè)Map中的一個(gè)元素(鍵/值對(duì)),是一個(gè)Map的內(nèi)部接口。

二、Set和List的區(qū)別:

1.Set接口實(shí)例存儲(chǔ)的是無(wú)序的,不重復(fù)的數(shù)據(jù)。List接口實(shí)例存儲(chǔ)的是有序的,可以重復(fù)的元素。

2.Set檢索效率低下,刪除和插入效率高,插入和刪除不會(huì)引起元素位置的改變,實(shí)現(xiàn)類有HashSet,TreeSet。

3.List和數(shù)組類似,可以動(dòng)態(tài)增長(zhǎng),根據(jù)實(shí)際存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度自動(dòng)增長(zhǎng)List的長(zhǎng)度。查找元素效率高,插入刪除效率低,因?yàn)闀?huì)引起其他元素位置改變,實(shí)現(xiàn)類有ArrayList,LinkedList,Vector。

三、集合實(shí)現(xiàn)類

1.AbstractCollection:實(shí)現(xiàn)了大部分的集合接口。

2.AbstractList:繼承于AbstractCollection并且實(shí)現(xiàn)了大部分List接口。

3.LinkedList:該類實(shí)現(xiàn)了List接口,允許有null元素。主要用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu),LinkedList查找效率低。

4.ArrayList:該類也是實(shí)現(xiàn)了List的接口,實(shí)現(xiàn)了可變大小的數(shù)組,隨機(jī)訪問(wèn)和遍歷元素時(shí),提供更好地性能。

5.AbstractSet:繼承于AbstractCollection并且實(shí)現(xiàn)了大部分Set接口。

6.HashSet:該類實(shí)現(xiàn)了Set接口,不允許出現(xiàn)重復(fù)元素,不保證集合中元素的順序,允許包含值為null的元素,但最多只能有一個(gè)。

7.LinkedHashSet:具有可預(yù)知迭代順序的Set接口的哈希表和鏈表列表實(shí)現(xiàn)。

8.TreeSet:該類實(shí)現(xiàn)了Set接口,可以實(shí)現(xiàn)排序等功能。

9.AbstractMap:實(shí)現(xiàn)了大部分的Map接口。

10.HashMap:HashMap是一個(gè)散列表,它存儲(chǔ)的內(nèi)容是鍵值對(duì)(key-value)映射。該類實(shí)現(xiàn)了Map接口,根據(jù)鍵的HashCode值存儲(chǔ)數(shù)據(jù),具有很快的訪問(wèn)速度,最多允許一條記錄的鍵為null,不支持線程同步。

11.TreeMap:繼承了AbstractMap,并且使用一棵樹。

12.LinkedHashMap:繼承于HashMap,使用元素的自然順序?qū)υ剡M(jìn)行排序。

13.Vector:該類和ArrayList非常相似,但是該類是同步的,可以用在多線程的情況,該類允許設(shè)置默認(rèn)的增長(zhǎng)長(zhǎng)度,默認(rèn)擴(kuò)容方式為原來(lái)的2倍。

14.HashTable:HashTable是Dictionary(字典)類的子類,位于java.util包中。

四、迭代器的使用(遍歷集合)

1、遍歷ArrayList

/** * 采用不同的方法遍歷ArrayList集合 * 其中采用迭代器的方法可以不用擔(dān)心在遍歷的過(guò)程中會(huì)超出集合的長(zhǎng)度 * */public class TestArrayList { public static void main(String[] args) { List list = new ArrayList<>(); list.add("吳永吉"); list.add("吳宇濤"); list.add("吳旭東"); //第一種遍歷:使用普通for System.out.println("第一種遍歷:"); for(int i=0;i iter = list.iterator(); while(iter.hasNext()) { //判斷下一個(gè)元素之后是否有值 System.out.println(iter.next()); } }}

2、遍歷HashSet

/** * 采用不同的方法遍歷HashSet集合 * */public class TestHashSet { public static void main(String[] args) { Set set = new HashSet<>(); set.add("吳永吉"); set.add("吳宇濤"); set.add("吳旭東"); //第一種遍歷:使用foreach System.out.println("第一種遍歷:"); for(String str:set) { System.out.println(str); } //第二種遍歷:將set轉(zhuǎn)換為數(shù)組相關(guān)的內(nèi)容進(jìn)行遍歷 System.out.println("第二種遍歷:"); String[] strArray = new String[set.size()]; set.toArray(strArray); for(String str:strArray) { System.out.println(str); } //第三種遍歷:使用迭代器進(jìn)行遍歷 System.out.println("第三種遍歷:"); Iterator iter = set.iterator(); while(iter.hasNext()) { //判斷下一個(gè)元素之后是否有值 System.out.println(iter.next()); } }}

 3、遍歷HashMap

/** * 采用不同的方式遍歷HashMap集合 * */public class TestHashMap { public static void main(String[] args) { Map map = new HashMap<>(); map.put(1, "吳永吉"); map.put(2, "吳宇濤"); map.put(3, "吳旭東"); //第一種遍歷:使用Map.keySet遍歷key和value System.out.println("第一種遍歷:"); for(Integer key:map.keySet()) { System.out.println("key:"+key+

總結(jié)

以上是生活随笔為你收集整理的java map清除值为null的元素_Java中的集合框架大总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。