你如何搜索地图?

时间:2010-04-23 15:20:18

标签: java

我有一张地图:

Map<String, String> ht = new HashMap();

我想知道如何搜索它并找到与特定字符串匹配的任何内容。如果它是匹配存储它成为arraylist。地图包含如下字符串:

1,2,3,4,5,5,5

,匹配的字符串为5。

所以我有这个:

  String match = "5";
  ArrayList<String> result = new ArrayList<String>();

 Enumeration num= ht.keys();
     while (num.hasMoreElements()) {
        String number = (String) num.nextElement();

        if(number.equals(match))
        {
           result.add(number);
        }

     }

4 个答案:

答案 0 :(得分:5)

我不太确定我是否理解你,但我猜您正在寻找containsKey

ht.containsKey("5");

答案 1 :(得分:3)

我猜你想要从值中找到键。

简单代码:

List<String> matches = new ArrayList<String>();
for (Map.Entry<String,String> entry : map.keys()) {
    if (targetValue.equals(entry.getValue())) {
        matches.add(entry.getKey());
    }
}

更好的方法是使用第二张地图进行反向映射,或者使用第三方库中的双向地图。

答案 2 :(得分:2)

显然你正试图找到价值观。所以这里有用的东西:

Map<String, String> m = new HashMap<String, String>();
..

List<String> result = new ArrayList<String>();
    for(String s: m.values()){
        if(s.equals("5")){
            result.add(s);
        }
    }

另外,请在if语句中注意null

答案 3 :(得分:1)

Map API不鼓励您再使用Enumeration作为一个非常古老的接口,并且有望被COllection接口取代,但遗留问题仍然是一个问题。

KeySet方法返回一个Set back,你可以直接使用set的contains方法进行比较