java 8 双冒号运算符
前言
java8增加了双冒号运算符、lambda本质上都是语法糖,学习过C#委托、匿名委托再理解java8中的双冒号运算符就容易多了。双冒号就是把方法当作参数传递给需要的方法,或者说是传递到stream()中去。换句话说java8双冒号运算符就是方法引用。方法引用又包括实例方法、静态方法。语法格式类名::方法名。
Java8 VS C#委托
1、Consumer
2、Predicate
3、Function
Show Demo
通过java8实战中交易员和交易记录的列子来理解下。计算出来自剑桥的交易员并且按照其姓名排序。
下面的例子Comparator.comparing需要一个Function委托,分解出来就是 Function
Listtrans=transactions .stream() .map(Transaction::getTrader) .filter(t->t.getCity().equals("Cambridge")) .distinct() .sorted(Comparator.comparing(Trader::getName)) .collect(toList()); //3.1 Function byName=(trader)->trader.getName(); trans=transactions .stream() .map(Transaction::getTrader) .filter(t->t.getCity().equals("Cambridge")) .distinct() .sorted(Comparator.comparing(byName)) .collect(toList()); for(Trader tr:trans){ System.out.println(tr.getName()); }