假设我有一个HashMap,其中string为键,整数为值
("a",10)
("b",2)
("c",9)
("d",34)
("e",12)
我想将值大于10的键放入ArrayList中。所以结果将是
("d","e")
因为它们的值大于10
我已经研究了这个,我发现的所有方法都将HashMap改为TreeMap或其他东西,但这是作业,所以我不能改变HashMap
答案 0 :(得分:3)
你不能比迭代所有元素做得更好。所以解决方案非常简单:
List<String> res = new ArrayList<String>();
for (String crtKey : map.keySet()) {
Integer value = map.get(crtKey);
if ( value != null && value > 10)
res.add(crtKey);
}
}
答案 1 :(得分:2)
使用Java 8,您可以使用以下构造:
List<String> filteredKeys = map.entrySet().stream()
.filter(e -> e.getValue() > 10) //keep values > 10
.map(Entry::getKey) //we only want the keys
.collect(toList()); //put them in a list
答案 2 :(得分:1)
试试这个:
ArrayList<String> mylist = new ArrayList<String>();
for (String key : map.keySet()) {
int value = map.get(key);
if (key > 10) {
mylist.add(key);
}
}
答案 3 :(得分:0)
好吧,既然你说这是家庭作业,我不会给出代码,但是,我会给你基本的想法。
只需循环遍历hashmap并获取值,并将其存储在列表中,如果它大于10.这是最好的,可以做到,并且是最简单的解决方案。
因此伪代码将类似于:
list = []
for each key in hashmap
if hashmap(key) > 10
list.append(key)
答案 4 :(得分:0)
List<String> res = new ArrayList<String>();
for (String crtKey : map.keySet()) {
Integer value = map.get(crtKey);
if ( value != null && value > 10)
res.add(crtKey);
}
}
答案 5 :(得分:0)
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 10);
map.put("b",2);
map.put("c",9);
map.put("d",34);
map.put("e",12);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 10) {
System.out.println(entry.getKey());
}
}