"Operator '<' cannot be applied to '<lambda parameter>', 'int' " 在 java
"Operator '<' cannot be applied to '<lambda parameter>', 'int' " in java
我在 lambda parameter
和 int
之间进行运算时遇到了问题。代码写法如下:
HashMap<Integer, Integer> testMap = new HashMap<>();
testMap.put(1, 1);
testMap.put(2, 2);
testMap.entrySet().removeIf((key, value) -> value < 100);
IDEA 显示错误Operator '<' cannot be applied to '<lambda parameter>', 'int'
。
我想知道为什么以及是否有任何方法可以解决这个问题。
Map#entrySet
returns a Set<Map.Entry<K,V>>
. Set
inherits removeIf
from the Collection
interface,它需要一个 Predicate<? super E>
,即带有单个参数的谓词。 E
在这种情况下是 Map.Entry<K,V>
(它仍然只是一个对象,即使它包含两个其他值:一个键和一个值)。可以分别通过 getKey()
和 getValue()
方法访问键和值。
您的代码很容易修复:
testMap.entrySet().removeIf(entry -> entry.getValue() < 100);
我在 lambda parameter
和 int
之间进行运算时遇到了问题。代码写法如下:
HashMap<Integer, Integer> testMap = new HashMap<>();
testMap.put(1, 1);
testMap.put(2, 2);
testMap.entrySet().removeIf((key, value) -> value < 100);
IDEA 显示错误Operator '<' cannot be applied to '<lambda parameter>', 'int'
。
我想知道为什么以及是否有任何方法可以解决这个问题。
Map#entrySet
returns a Set<Map.Entry<K,V>>
. Set
inherits removeIf
from the Collection
interface,它需要一个 Predicate<? super E>
,即带有单个参数的谓词。 E
在这种情况下是 Map.Entry<K,V>
(它仍然只是一个对象,即使它包含两个其他值:一个键和一个值)。可以分别通过 getKey()
和 getValue()
方法访问键和值。
您的代码很容易修复:
testMap.entrySet().removeIf(entry -> entry.getValue() < 100);