最干净的方法是什么?
我有
Map<String, List<String>> map1 = ...;
Map<String, List<String>> map2 = ...;
Map<String, List<String>> map3 = ...;
Run Code Online (Sandbox Code Playgroud)
地图都具有完全相同的键,没有重复的值.我想为每个键将map2和map3的列表附加到map1列表的末尾.
这就是我目前正在尝试这样做的方式:
Map<String, List<String>> conversions = new HashMap<String, List<String>>();
List<String> histList = new ArrayList<String>();
for(String key : map1.keySet()){
histList.addAll(map1.get(key));
histList.addAll(map2.get(key));
histList.addAll(map3.get(key));
conversions.put(key,histList);
}
Run Code Online (Sandbox Code Playgroud) 当我只将对象放在listOfRates中然后通过复制它创建inverseListOfRates时,我首先注意到了这个问题.但即使使用这种方法,我也不能改变一个列表而不改变另一个列表.
我该如何解决这个问题?
List<HistoricRate> listOfRates = new ArrayList<HistoricRate>();
List<HistoricRate> inverseListOfRates = new ArrayList<HistoricRate>();
for (HistoricRate rate : rates){
listOfRates.add(rate);
inverseListOfRates.add(rate);
}
inverseListOfRates.forEach(r -> r.setMid(1 / r.getMid()));
Run Code Online (Sandbox Code Playgroud)