Java 8 Lamda Sort没有被调用

时间:2018-04-04 02:15:11

标签: java lambda

我有一份数据清单。我想使用自定义比较器排序。我有以下代码但它没有被执行。能不能让我知道出了什么问题。

我尝试将allACF数据类型设为java.util.Collection

List<Interface> allACFs =  (List<Interface>) SearchUtil.seacrh(individualiterator, SearchUtil.startswith("type.code", "ACF"));

allACFs.stream().sorted(new Comparator<Interface>() {

    @Override
    public int compare(Interface o1, Interface o2) {
        System.out.println(o1.getType().getCode()+" : "+o2.getType().getCode()+" > "+o1.getType().getCode().compareTo(o2.getType().getCode()));
        return o1.getType().getCode().compareTo(o2.getType().getCode());
    }
});

1 个答案:

答案 0 :(得分:2)

您的自定义比较器未被调用,因为您没有从流中请求任何项目。因此,排序操作 deferred ,直到您想要收集排序结果。

如果要强制进行呼叫,请在流上调用collect(Collectors.toList())

List<Interface> list = allACFs.stream().sorted(new Comparator<Interface>() {
    @Override
    public int compare(Interface o1, Interface o2) {
        System.out.println(o1.getType().getCode()+" : "+o2.getType().getCode()+" > "+o1.getType().getCode().compareTo(o2.getType().getCode()));
        return o1.getType().getCode().compareTo(o2.getType().getCode());
    }
}).collect(Collectors.toList());