[英]How to sort and order a list using the Java 8 streams API
给定以下对象列表:
final List<BusinessUnit> unorderedUnits = Arrays.asList(
new BusinessUnit("OTHER"),
new BusinessUnit("BUELL"),
new BusinessUnit("HARLEY_DAVIDSON"),
new BusinessUnit("VINTAGE")
);
我正在尝试对上述列表重新排序,以便按照“HARLEY_DAVIDSON”、“VINTAGE”、“BUELL”以及列表中所有其他对象的顺序排列。
我试图通过以下方式实现这一目标:
unorderedUnits.sort(comparingInt(f -> asList("HARLEY_DAVIDSON", "VINTAGE", "BUELL").indexOf(f.getName())));
这样做的结果:
result.forEach(r -> System.out.println(r.getName()));
OTHER
HARLEY_DAVIDSON
VINTAGE
BUELL
请注意OTHER
元素位于正确排序的元素之前。
如何确保OTHER
元素(和任何其他元素)位于与sort
列出的属性值对应的元素之后?
以下comparator
:
unorderedUnits.sort(comparingInt(n -> ordered.indexOf(n.getName()) == -1 ? ordered.size() : ordered.indexOf(n.getName())));
实现我正在寻找的输出:
HARLEY_DAVIDSON
VINTAGE
BUELL
OTHER
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.