为什么我不能使用Lambda而不是Collectors.groupingBy中的方法引用?

在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()));
handanlove521 回答:为什么我不能使用Lambda而不是Collectors.groupingBy中的方法引用?

当然可以,只是不要使用两次同名a

Map<String,List<TransAction>> c = Arrays.stream(a)
                                         .collect(Collectors.groupingBy(s -> s.getStr()));
本文链接:https://www.f2er.com/3135870.html

大家都在问