打印具有特定值</key,value>的List的<key,value>

时间:2013-10-02 17:08:51

标签: java list

我已将列表定义为:

  List<Entry<String, Integer>> list

它有字符串的计数。我想迭代列表并打印所有计数为1的字符串/键。

这就是我的尝试:

for (int i=0;i<list.size();i++) {
    if(list.get(i) == 1){
        System.out.println(list(i));
    }
}

我得到“不兼容的操作数类型Map.Entry和int”

4 个答案:

答案 0 :(得分:6)

您可以使用“{foreach”类型的for循环轻松完成此操作:

for (Map.Entry<String,Integer> entry : list) {
    if (entry.getValue() == 1) {
        System.out.println(entry);
    }
}

我们的想法是完全跳过索引,并使用Java的内置迭代功能来缩短代码。

答案 1 :(得分:2)

如果您必须使用List<Entry<String, Integer>> ...

您从列表中检索了Entry<String, Integer>,但是您将其与1进行了比较。您需要更进一步,从Integer检索Entry,大概是getValue()

if(list.get(i).getValue() == 1){

此外,list(i)将无法编译。您可能需要声明一个新变量来保存list.get(i)的结果,这样您就不必在同一条目上两次调用get

答案 2 :(得分:1)

  

“不兼容的操作数类型Map.Entry和int”

那是因为您要将Map.Entry引用与int进行比较。

您需要将List的每个元素作为Entry并在value条件比较中使用其if属性

for (int i=0;i<list.size();i++) {   

    Entry<String, Integer> e = list.get(i);

    if(e.getValue() == 1){
        System.out.println(e);
    }
}

我不知道为什么你有List<Entry>,但是可能有更好的方法来迭代Entry元素,即。 Iterator

答案 3 :(得分:1)

您有Map.Entry对象列表。您可以使用以下代码迭代列表。

for (Map.Entry<String, Integer> entry:list) {
    if(entry.getValue() == 1){
        System.out.println("key":+entry.getKey());
        System.out.println("value":+entry.getValue());
    }
}