如果某个值与另一个值匹配,那么我想将与该值对应的键值对变为新映射,并且将不匹配的值(即唯一键,值对)转换为另一个映射。
例如:
Map<String,Double> map = new HashMap<String,Double>();
map.put("First",123.12345); //data1
map.put("Second",234.3456); //data2
map.put("Third",576.9876); //data3
map.put("Fourth",123.12345);//data4
map.put("Fifth",234.3456); //data5
map.put("Sixth",999.8888); //data6
map.put("Seventh",677.4578); //data7
现在这里(data1和data4)值(data2和data5)和匹配,我想在新地图中存储这些(键,值)对
类似地,data3,data和data7具有唯一值,我想将这些(键,值)对存储在另一个新Map中。
感谢任何帮助。
提前致谢。
答案 0 :(得分:0)
您按地图值进行分组,并将具有相同值的条目收集到地图中。
{
123.12345 -> {
First -> 123.12345,
Fourth -> 123.12345
},
234.3456 -> ...
}
这会给你如下结果:
Map<Double, Map<String, Double>> result = new HashMap<>();
for (Entry<String, Double> mapping : map.entrySet()) {
Double value = mapping.getValue();
if (!result.containsKey(value)) {
result.put(value, new HashMap<>());
}
// Add new pair to map
result.get(value).put(mapping.getKey(), value);
}
在java 7中:
text_size : self.size