国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁/技術文章
文章詳情頁

Java中Map集合中的Entry對象用法

瀏覽:2日期:2022-08-23 18:55:23

Entry: 鍵值對 對象。

在Map類設計是,提供了一個嵌套接口(static修飾的接口):Entry。Entry將鍵值對的對應關系封裝成了對象,即鍵值對對象,這樣我們在遍歷Map集合時,就可以從每一個鍵值對(Entry)對象中獲取對應的鍵與對應的值。

Entry為什么是靜態的?

Entry是Map接口中提供的一個靜態內部嵌套接口,修飾為靜態可以通過類名調用。

Map集合遍歷鍵值對的方式:

Set<Map.Entry<K,V>> entrySet();

//返回此映射中包含的映射關系的Set視圖

該方法返回值是Set集合,里面裝的是Entry接口類型,即將映射關系裝入Set集合。

實現步驟:

1,調用Map集合中的entrySet()方法,將集合中的映射關系對象存儲到Set集合中

2,迭代Set集合

3,獲取Set集合的元素,是映射關系的對象

4,通過映射關系對象的方法,getKey()和getValue(),獲取鍵值對

補充知識:【JAVA】Map集合(映射集合)、鍵值對的概念&集合對象的取和放

Map集合

Map集合的作用就是為了快速查找,他里面的集合我們就可以理解為哈希表,且哈希表存東西最好使用鍵和值。這里要注意的是,Map集合和Collection集合是并列的關系,不存在繼承關系。

注:哈希表就是稀疏數組,因為他雖然是數組,但并不是每個索引都用上了,即位置沒有存滿,浪費了許多空間。

鍵值對

Map存儲時一般都需要兩個東西,我們把哈希表里的每個東西叫做Entry對象,另外表外有一個Entry接口。這個接口里定義了兩個方法——key(鍵)和value(值)。

為什么是分為鍵和值兩部分呢?

因為,我們拿鍵的哈希碼來計算我們所要存儲的索引,查找也一樣通過鍵來查找。鍵也是對象,每個對象都有一個HasCode。且HasCode主要是用來計算數組的索引的。而且用鍵值對查找,其查找速度非常快。

但是,這里要注意的是,有的時候,我們拿值去保存哈希碼的話,可能不是太好。我們希望去找特定的數據類型,專門拿某種類型來計算哈希碼。

將對象放進集合

集合先將鍵和值封裝成Entry,然后根據鍵算出哈希碼的索引,然后將計算好的Entry對象放到計算出來的那個索引的位置上。

Map m = new HashMap();m.put('abc', new Student(2000, '孫悟空', ’m’));m.put('bcd', new Student(2001, '牛魔王',’m’));m.put('cde', new Student(1999, '紫霞仙子', ’f’));

將集合中的對象取出

通過鍵所封裝的對象的索引位置,來取出Entry對象。但是,最終返回的是值,而不是Entry對象。

Map m = new HashMap();m.put('abc', new Student(2000, '孫悟空', ’m’));m.put('bcd', new Student(2001, '牛魔王',’m’));m.put('cde', new Student(1999, '紫霞仙子', ’f’));System.out.println(m.get('abc'));

哈希碼

這里的哈希碼是從Object繼承下來的,但是不見子類就合適,因為Object繼承下來的哈希碼是用地址算的,所以值特別大。如果要往哈希表里面放,那么浪費空間就比較大,所以子類一般會重寫。

通過鍵取Entry對象

返回Entry對象的方法只有一個entrySet方法,而entrySet返回的一定是Set。即它將Entry封裝成了Set集合,我們這里返回的是Entry接口的集合。

System.out.println(m.get('abc')); Set s = m.entrySet(); //迭代Set Iterator iter = s.iterator(); //判斷 while (iter.hasNext()) { Map.Entry entry=(Map.Entry)iter.next(); System.out.println(entry.getKey()+':'+entry.getValue()); }

遍歷所有的值

//這里不能用Set,因為Set是個無序集, //且不能重復,但是,哈希表里的值可以重復。 //所以,應該用Collection來引用,不敢用Set。 //values返回的是Collection, //且不能返回Set,因為這樣會將值給去掉, //且值有可能是重復的。 //鍵也不能重復,鍵也返回的是Set。 Collection c=m.values(); Iterator it=c.iterator(); while(it.hasNext()){ System.out.println(it.next()); }

拿到所有的鍵

/** * 拿到所有的鍵 */ Set ss=m.keySet(); Iterator iter1=ss.iterator(); while(iter1.hasNext()){ System.out.println(iter1.next()); }

以上這篇Java中Map集合中的Entry對象用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 精品国产香蕉伊思人在线 | 精品一区二区三区在线视频观看 | 三级黄色毛片网站 | 久久九九有精品国产56 | 国产精品玖玖 | 亚洲a在线视频 | 视频二区国产 | 欧美a级毛片 | 欧美在线一级毛片视频 | 91久久香蕉青青草原娱乐 | 国产精品白浆流出视频 | 国产成人综合手机在线播放 | 成年人在线免费 | 精品久久久久久中文字幕网 | 日韩精品一区二区三区免费视频 | 成人黄网18免费观看的网站 | 中文字幕在线观看不卡视频 | 性生活视频网站 | 日本视频三区 | 91精品国产综合久久香蕉 | 国产菲菲视频在线观看 | 国产日韩高清一区二区三区 | 日本三级毛片 | 久久国产欧美日韩精品免费 | 国产精品久久久久久亚洲伦理 | 毛片网站在线看 | 亚洲第一网站在线观看 | 一级欧美视频 | 亚洲国产精品免费观看 | 一级aaaaaa毛片免费 | 欧美一级欧美三级在线 | 久久国产精品99久久久久久牛牛 | 女人扒开双腿让男人捅 | 亚洲视频免费观看 | 毛片看看 | 久久99爱视频| 在线视频三区 | 欧美综合视频在线 | 国产午夜精品理论片久久影视 | 九九re6精品视频在线观看 | 一级毛片美国一级j毛片不卡 |