繁体   English   中英

如何使用 Java 8 流 API 对列表进行排序和排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM