比较重复条目的Hashmap字符串值和重复键

时间:2015-12-25 00:48:26

标签: java android dictionary arraylist hashmap

我正在使用

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

如何进行检查才能获得这些重复的密钥?

有人可以给我一些解决这个问题的指导吗?

感谢。

3 个答案:

答案 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

注意:区分大小写,在上面的代码中,它会认为Dogdog都不同。

答案 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