将哈希映射的值分类为ArrayList

时间:2014-05-12 13:27:46

标签: java hashmap

假设我有一个HashMap,其中string为键,整数为值

("a",10)
("b",2)
("c",9)
("d",34)
("e",12)

我想将值大于10的键放入ArrayList中。所以结果将是

("d","e")

因为它们的值大于10

我已经研究了这个,我发现的所有方法都将HashMap改为TreeMap或其他东西,但这是作业,所以我不能改变HashMap

6 个答案:

答案 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());
            }
        }