我有一份数据清单。我想使用自定义比较器排序。我有以下代码但它没有被执行。能不能让我知道出了什么问题。
我尝试将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());
}
});
答案 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());