1. java中的List里的Map 如何去除重復的Key
「可以利用Map的key不重復特性: 遍歷List,遍歷過程中將List中取出的值作為key保存到一個臨時的Map中,Map的value可以自己隨意設定。 注意,在保存到Map之前,使用map.get("key")從Map中獲取對應是數據,判斷是否為null即可判斷該List中的值是否...」
2. java map key可以重復嗎
如果重復添加的話,hashmap會自動覆蓋key一樣的數據,保證一個key對應一個value
也就是說,你只要把一個map2里的數據按照key一個一個都加到map1里去就行了,但是這樣會破壞map1
如果是想保持原來的不變,可以先新建一個空的hashmap,把map1和map2的數據都加進去就可以了
HashMap map3 = new HashMap();
for (Object key : map1.keySet())
map3.put(key, map1.get(key));
for (Object key : map2.keySet())
map3.put(key, map2.get(key));
可以根據具體的類型加上泛型模板
分享
3. Java中的Map允許有重復元素嗎
首先Map是鍵值對集合,因為map是無序的鍵和值是一一對應的,一個鍵(key)對應一個值,通過鍵(key)來找值,但是如果你定義兩個同樣的key,這樣就違背了java對map的定義,鍵和值是一一對應的;
特別說明:建的值是不能相同的,這個語法會報錯,
但是如果你的鍵是引用類型(存的是地址),在語法上是不會報錯的,後一個會將前一個覆蓋,從而指向後一個鍵的值
publicclassTestEquals{
publicstaticvoidmain(String[]args){
Strings1=newString("abc");
Strings2=newString("abc");
Mapmap=newHashMap();
map.put(s1,"abc123");
map.put(s2,"ABC456");//第二個會覆蓋第一個元素
System.out.println(map.size());
System.out.println(map.get(s1));
}
4. java map中如何判斷key是否相同
key,存儲的是一個對象的引用,只要兩個引用指向同一個內存地址,那麼這兩個key就是相同的。
5. java map哪些不能存儲重復的key
JAVA的MAP都不能存儲重復的KEYx0dx0a我估計你想問題的問題是 JAVA的哪些容器不能儲存重復的KEY吧?x0dx0a MAP,SET ,都不能儲存重復的值.,並且保存的內容是沒有順序的.所以很多程序員用map或set來進行去重功能.x0dx0alist 是可以保存重復的值.而且保存的內容是有順序的.所以可以通過list.get(index)來獲得對應位置的數據.
6. java map的key可以重復嗎
一般是不能
HashMap HashSet 的底層數據結構的實現是:維護了一張 HashTable 。容器中的元素全部存儲在Hashtable 中。他們再添加元素的時候,是如何判斷是否存在有重復元素的呢? 每一個被添加的元素都有一個 hashCode(哈希值),他們先比較哈希值,是否相同? 不相同的元素,添加進入 HashTable. 如果hashCode相同的話, 再去比較 equals()方法,如果也相同的話,JVM就認為數據已經存在了,就不會唯胡添加數據!
TreeMap TreeSet底層是數據結構的實現是:維護了一棵二叉樹。 容器中添加元素的時候,他們有是怎麼判斷是否有相同巧搜元素的?我們都直到 TreeMap TreeSet 她們 都是 有序的存儲數據。 為了維護 數據的唯一性。 再存入數據的時候,他們會調用元素中 實現的 Comparable 的 compareTo() 方法(代碼1)。 或者 集合本身創建的時候 傳入了 迭代器(代碼2). 具體的實現是:調用比較方法,返回-1 的時候,添加到左子樹,返回1 的時候 添加到 右子樹。返回0 有相同數據 不添加該元素!
在java中,有一種key值可以重復的map,就是IdentityHashMap。在IdentityHashMap中,判斷兩個鍵值k1和 k2相等的條件是 k1 == k2 。在正常的Map 實現(如 HashMap)中,當且僅當滿足下列條件時才認為兩個鍵 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2))。
IdentityHashMap類利用哈希表實現 Map 介面,比較鍵(和值)時指寬攔使用引用相等性代替對象相等性。該類不是 通用 Map 實現!此類實現 Map 介面時,它有意違反 Map 的常規協定,該協定在比較對象時強制使用 equals 方法。