我已将列表定义为:
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”
您可以使用“foreach”类型的for
循环更轻松地完成此操作,如下所示:
for (Map.Entry<String,Integer> entry : list) {
if (entry.getValue() == 1) {
System.out.println(entry);
}
}
这个想法是完全跳过索引,并使用 Java 的内置迭代功能来缩短您的代码。
如果必须使用List<Entry<String, Integer>>
...
您Entry<String, Integer>
从列表中检索了您的,但您将其与1
. 您需要更进一步并Integer
从 中检索Entry
,大概是getValue()
。
if(list.get(i).getValue() == 1){
此外,list(i)
不会编译。您可能需要声明一个新变量来保存结果,list.get(i)
这样您就不必get
在同一个条目上调用两次。
“不兼容的操作数类型 Map.Entry 和 int”
那是因为您将Map.Entry
参考与int
.
您需要获取List
as 的每个元素并在条件比较中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
。
您有 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());
}
}