在Java 8 Stream.collect函数中,当我使用Collectors.groupingBy()
时,我注意到参数可能是
Function<? super T,? extends K> classifier
在这里,我必须使用::
方法参考。为什么我不能使用lambda代替?
public class Transaction{
public Transaction(String s,Integer v) {
str=s;
value=v;
}
private String str;
private Integer value;
//getter/setters...
}
//in main()
Transaction[] a = { new Transaction("small",41),...,new Transaction("big",122) };
Map<String,List<Transaction>> c = Arrays.stream(a).collect(Collectors.groupingBy(Transaction::getStr));
//Arrays.stream(a).collect(Collectors.groupingBy((a)->a.getStr()));