获取地图键而不是地图值

时间:2013-05-24 11:56:57

标签: java

我有一些这样的数据:

Map<Integer, String> foo

现在,我可以使用String

获取相应的foo.get(1)

但是也可以获得Integer&#34; abc&#34;的所有String

与此伪代码类似:Integer[] someMore = foo.getKeys("abc")

4 个答案:

答案 0 :(得分:3)

尝试:

Set<Integer> myInts = new HashSet<Integer>();
for(Entry<Integer, String> entry : foo.entrySet()) { // go through the entries
    if(entry.getValue().equals("abc")) {             // check the value
        myInts.add(entry.getKey());                  // add the key
    }
}
// myInts now contains all the keys for which the value equals "abc"

答案 1 :(得分:1)

Map未提供按值查找。我们需要通过迭代Map条目

来实现
Set<Integer> matchingKeys =  new HashSet<Integer>();
for(Entry<Integer, String> e : map.entrySet()) {
    if(e.getValue().equals("abc")) {
          matchingKeys.add(e.getKey());
    }
}

答案 2 :(得分:0)

你无法通过常规地图获得。您必须致电foo.entrySet()并自行创建阵列。

也许您会对使用双向地图感兴趣。这是一个线程,你可以阅读一下这个。 Bi-directional Map in Java?

答案 3 :(得分:0)

Map<Integer, String> map = new Map<Integer, String>();
ArrayList<Integer> arraylist = new ArrayList<Integer>();
for (Entry<Integer, String> entry : map.entrySet()) {
    if (entry.getValue().equals("abc")) {
    arraylist.add(entry.getKey());
    }
}