我有一张地图:
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);
}
}
答案 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方法进行比较