Map map1 = new HashMap<>();
map1.put("x", "y");
map1.put("a", "b");
map1.put("c", "d");
map1.put("e", "d");
map1.put("f", "b");
map1.put("m", "n");
Map> map2 = new HashMap<>();
String entryValue = null;
String entryKay = null;
ArrayList tmpValue = new ArrayList<>();
ArrayList tmpMap2Value = new ArrayList<>();
for (Entry entry : map1.entrySet()) {
tmpValue.clear();
tmpMap2Value.clear();
entryKay = entry.getKey();
entryValue = entry.getValue();
if (map2.keySet().contains(entryValue)) {
tmpMap2Value = map2.get(entryValue);
tmpMap2Value.add(entryKay);
map2.put(entryValue, (ArrayList) tmpMap2Value.clone());
} else {
tmpValue.add(entryKay);
map2.put(entryValue, (ArrayList) tmpValue.clone());
}
}
System.out.println(map2);
Java不能 通過簡單的指派來解決對象複制的問題,需要利用clone實作。
【轉】HashMap集合中key隻能為引用資料類型,不能為基本類型
在HashMap中,為什麼不能使用基本資料類型作為key? 其實和HashMap底層的存儲原理有關,HashMap存儲資料的特點是:無序.無索引.不能存儲重複元素. 存儲元素采用的是hash表存儲資料 ...
HashMap 的周遊key與value的方法
HashMap最經常使用的使用方法是依據key增删改查value,有時候會須要知道一個HashMap有多少個keys以及這些keys都是什麼,能夠用以下的代碼實作. 方法1: Map map = ne ...
一個簡單需求:HashMap實作相同key存入資料後不被覆寫
做一個積極的人 編碼.改bug.提升自己 我有一個樂園,面向程式設計,春暖花開! 看似是一個簡單的問題,其實裡面包含很多的東西! 需求: 實作一個在HashMap中存入(任意類型)相同的key值後,key ...
JDK1.7的HashMap的put(key, value)源碼剖析
目錄 HashMap的put操作源碼解析 1.官方文檔 2.put(key, value) 3.完結 HashMap的put操作源碼解析 1.官方文檔 1.1.繼承結構 java.lang.Objec ...
如何高效的周遊HashMap 以及對key 進行排序
Map map = new HashMap(); for(int i = 0; i<=100;i++){ ...
java自定義類型 作為HashMap中的Key值 (Pair<;V,K>;為例)
由于是自定義類型,是以HashMap中的equals()方法和hashCode()方法都需要自定義覆寫. 不然内容相同的對象對應的hashCode會不同,無法發揮算法的正常功能,覆寫equals方法, ...
Java - HashMap分别按Key和Value進行排序
我們都知道,Java中的Map結構是key->value鍵值對存儲的,而且根據Map的特性,同一個Map中 不存在兩個Key相同的元素,而value不存在這個限制.換句話說,在同一個Map中Ke ...
使用HashMap,如果key是自定義的類,就必須重寫hashcode()和equals()
java程式設計裡有關約定:如果兩個對象根據equals方法比較是相等的,那麼調用這兩個對象的任意一個hashcode方法都必須産生相同的結果. hashcode()和equals()都繼承于object ...
随機推薦
JPA 批量新增
1. 在實作類 增加 EntityManager 注入 private EntityManager em; @PersistenceContext(name = "EntityManager ...
深入了解inode與軟硬連結
一.inode是什麼? 了解inode,要從檔案儲存說起. 檔案儲存在硬碟上,硬碟的最小存儲機關叫做"扇區"(Sector).每個扇區儲存512位元組(相當于0.5KB). 作業系統 ...
【CSDN部落格之星】2013年CSDN部落格之星正在評選,希望大家支援,非常感謝!
首先在此感謝 MoreWindows 秒殺多線程面試題系列讓我成長和學習,同時也借鑒了很多優秀觀點和示例! 請各位讀者可以支援MoreWindows,讓更優秀的文章陪伴我們! 各位讀者好, 本人部落格自 ...
【C++基礎】關鍵字static 局部變量
1.局部變量 static局部變量和普通局部變量有什麼差別:static局部變量隻被初始化一次,下一次依據上一次結果值: int test(int j){ static int i=10; i=i+j ...
FZU 1753
題目的思路還是很簡單的,找出這些組合數中最大的公約數: 其中C(n,k)=n ! /k!/(n-k)! 是以枚舉每個素因數,用(n!)的減去(k!)和(n-k)!的就行了... 最後取每組的最小值 # ...
Linux多線程實踐(7) --多線程排序對比
屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...
[AGC001 E] BBQ Hard
Description 有\(N(N\leq 200000)\)個數對\((a_i,b_i)(a_i,b_i,\leq 2000)\),求出\(\sum\limits_{i=1}^n\sum\limi ...
leetCode 典型回溯例子
39題,翻譯題目:給定一組候選集和一個目标值,在c的所有組合中,找出所有總和等于T的組合. 候選數組c中同一個數可以被選擇多次(不限次數) 分析: 典型的回溯法應用 對數組裡面的每個數,用遞歸的方式相 ...
《算法》第四章部分程式 part 11
▶ 書中第四章部分程式,包括在加上自己補充的代碼,二分圖的判定和染色 ● 二分圖 1 //+------------------------------------------------------ ...
R中的空間資料分析
> library(sp) > library(maptools) > library(raster) > library(rgeos) > maxd3 = readAs ...