我有一张地图,我想要计算一些东西.在java 8之前,我不得不在地图中为每个键放置一个零,然后才能这样map.put(key, map.get(key)+1).
从Java 8开始,我现在可以使用Map的合并方法,如下例所示:
public class CountingMap {
private static final Map<Integer, Integer> map = new HashMap<> ();
public static Integer add (final Integer i1,
final Integer i2) {
return i1 + i2;
}
public static void main (final String[] args) {
map.merge (0, 1, CountingMap::add);
System.out.println (map); //prints {0=1}
map.merge (0, 1, CountingMap::add);
System.out.println (map); //prints {0=2}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以将对Integer的+运算符的引用作为BiFunction传递而不必声明我自己的add函数吗?
我已经尝试过类似的事情Integer::+,Integer::operator+但没有这些作品.
编辑:正如Tunaki指出的那样,我可以使用它Integer::sum.不过,我想知道是否有可能直接通过运营商作为参考.
Ser*_*kin 10
没有办法+在Java中传递运算符.您可以add直接在方法调用中实例化.
map.merge (0, 1, (i, j) -> i + j);
Run Code Online (Sandbox Code Playgroud)
或指定变量:
BiFunction<Integer, Integer, Integer> add = (i, j) -> i + j;
Run Code Online (Sandbox Code Playgroud)
或者同样的事情 Integer::sum
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |