Java中的Map允許有重復(fù)元素嗎?
Java中常見的三個(gè)集合接口:List、Set、Map,已經(jīng)知道List中是允許有重復(fù)元素的,而Set中是不允許有重復(fù)元素的,那么Map中允許有重復(fù)元素嗎?
查閱資料,發(fā)現(xiàn)是不可以的,因?yàn)閙ap是無序的,它的查詢需要通過key的值來查找,如果你定義兩個(gè)同樣的key,那么一個(gè)key就對(duì)應(yīng)了多個(gè)值,這樣就違背了java對(duì)map的定義,鍵和值是一一對(duì)應(yīng)的。所以key不可以重復(fù)。
寫個(gè)代碼測試一下:
package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重復(fù)的測試 public class TestEquals { public static void main(String[] args) { String s1=new String("abc"); String s2=new String("abc"); Map map=new HashMap(); map.put(s1, "abc123"); map.put(s2, "ABC456");//第二個(gè)會(huì)覆蓋第一個(gè)元素 //注意:map中key值不可重復(fù),直接根據(jù)比較的是equals,只有equals相同則覆蓋 System.out.println(map.size()); System.out.println(map.get(s1)); } }
輸出結(jié)果:
1
ABC456
如果key重復(fù),應(yīng)該選取這個(gè)key對(duì)應(yīng)的哪個(gè)值放入容器呢?做了一下測試:
public class Test { public static Map putSome(Map<String,String> map){ map.put("gender", "Male"); map.put("name", "Athor"); map.put("name", "Cindy"); map.put("name", "Billy"); map.put("from","China"); return map; } public static void main(String[] args) { System.out.println(putSome(new HashMap<String,String>())); System.out.println(putSome(new TreeMap<String,String>())); System.out.println(putSome(new LinkedHashMap<String,String>())); } }
輸出結(jié)果:
{name=Billy, gender=Male, from=China}
{from=China, gender=Male, name=Billy}
{gender=Male, name=Billy, from=China}
可見不論是Map的哪個(gè)子類,鍵name對(duì)應(yīng)的值都是Billy,即最后一個(gè)name的鍵值對(duì),它覆蓋了之前的name鍵值對(duì)。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
IntelliJ IDEA遠(yuǎn)程Debug Linux的Java程序,找問題不要只會(huì)看日志了(推薦)
這篇文章主要介紹了IntelliJ IDEA遠(yuǎn)程Debug Linux的Java程序,找問題不要只會(huì)看日志了,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Springboot應(yīng)用gradle?Plugin示例詳解
這篇文章主要介紹了Springboot應(yīng)用gradle?Plugin詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn)
這篇文章主要介紹了Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn),文章首先通過需要先引入坐標(biāo)展開主題的相關(guān)內(nèi)容介紹,需要的朋友可以參一下2022-06-06Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解
這篇文章主要介紹了Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Spring Boot 編寫Servlet、Filter、Listener、Interceptor的方法
這篇文章給大家介紹了spring-boot中如何定義過濾器、監(jiān)聽器和攔截器,對(duì)Spring Boot 編寫Servlet、Filter、Listener、Interceptor的相關(guān)知識(shí)感興趣的朋友一起看看吧2017-07-07Spring中的DeferredImportSelector實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring中的DeferredImportSelector實(shí)現(xiàn)詳解,兩個(gè)官方的實(shí)現(xiàn)類AutoConfigurationImportSelector和ImportAutoConfigurationImportSelector都是Spring Boot后新增的實(shí)現(xiàn),需要的朋友可以參考下2024-01-01