我正在使用
throw new IOException();
我的输出是:
Map<Integer, String> adi = new HashMap<Integer, String>();
for(int u=0; u< sari_nodes.size();u++){
adi.put(u, sari_nodes.get(u));
}
for (Map.Entry<Integer, String> entry : adi.entrySet()) {
tv.setText(tv.getText()+"Key : " + entry.getKey()+ " Value : " + entry.getValue()+"\n");
}
我想重复相同条目的键,以便我的输出看起来像
key: 0 Value : cat
key: 1 Value : dog
key: 2 Value : car
key: 3 Value : car
key: 4 Value : car
key: 5 Value : car
如何进行检查才能获得这些重复的密钥?
有人可以给我一些解决这个问题的指导吗?
感谢。
答案 0 :(得分:1)
您只需制作第二张地图,当您遍历第一张地图的元素时,将键值翻转为第二张地图的值键。如果第一个映射的值已经作为键添加到第二个映射中,请不要覆盖,并在后者中输出key-stored-as-a值,否则输出新键。
答案 1 :(得分:1)
我的回答是NameSpace
。
您希望每个值都是唯一的。因此,为此您可以创建一个地图,将当前地图的值添加为关键字。最终,我们尝试为相同的值获取相同的密钥(第一个密钥)。你可以通过以下方式完成。
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "cat");
map.put(2, "dog");
map.put(3, "car");
map.put(4, "cat");
map.put(5, "dog");
map.put(6, "dog");
Map<String, Integer> uniqueValues = new HashMap<>();
for (Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String val = entry.getValue();
if (uniqueValues.containsKey(val)) {
key = uniqueValues.get(val);
}
uniqueValues.put(val, key);
System.out.println("Key : " + key + " - Value : " + val);
}
<强>输出强>
Key : 1 - Value : cat
Key : 2 - Value : dog
Key : 3 - Value : car
Key : 1 - Value : cat
Key : 2 - Value : dog
Key : 2 - Value : dog
注意:区分大小写,在上面的代码中,它会认为Dog
和dog
都不同。
答案 2 :(得分:0)
您可以尝试以下代码:
Map<Integer, String> adi = new HashMap<>();
adi.put(0, "cat");
adi.put(1, "dog");
adi.put(2, "car");
adi.put(3, "car");
adi.put(4, "car");
adi.put(5, "PC");
int lastKey = 0;
String lasValue = "";
for (Map.Entry<Integer, String> entry : adi.entrySet()) {
if (!entry.getValue().equals(lasValue)) {
lastKey = entry.getKey();
}
lasValue = entry.getValue();
//tv.setText(tv.getText()+"Key : " + lastKey+ " Value : " + entry.getValue()+"\n");
System.out.println("Key : " + lastKey+ " Value : " + entry.getValue());
}
这是输出:
Key : 0 Value : cat
Key : 1 Value : dog
Key : 2 Value : car
Key : 2 Value : car
Key : 2 Value : car
Key : 5 Value : PC