我有一个用字符串和整数填充的 HashMap:
Map<String, Integer> from_table;
from_table = new HashMap<String, Integer>();
接下来,我想获取值(整数)高于 x 的项目的所有键。
例如所有值超过 4 的键。
有没有一种快速的方法来做到这一点?
谢谢!
public static void printMap(Map mp) {
for(Map.Entry pairs : mp.entrySet()) {
if(pairs.getValue() >= 4)
{
System.out.println(pairs.getKey());
}
}
}
好吧,遍历键值对并收集值符合条件的键
//collect results here
List<String> resultKeys= new ArrayLIst<String>();
//hash map iterator
Iterator<String> it = from_table.keySet();
while(it.hasNext()) {
//get the key
String key= it.next();
/get the value for the key
Integer value= from_map.get(key);
//check the criteria
if (value.intValue() > x) {
resultKeys.add(key);
}
}
不在标准 Java 中。Guava 有一个叫做filter的方法,它完全是作为一个单行(+谓词)来完成的。
正如上述解决方案所述,没有什么比循环更快的了,但另一种解决方案是编辑函数以在地图中放置一些东西并让它检查是否有 4 个或更多项目,如果有则将其添加到仅包含计数超过 4 的对象的新列表