给出以下对象列表:
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
中列出的属性值相对应的元素之后?
答案 0 :(得分:0)
以下comparator
:
unorderedUnits.sort(comparingInt(n -> ordered.indexOf(n.getName()) == -1 ? ordered.size() : ordered.indexOf(n.getName())));
达到我想要的输出:
HARLEY_DAVIDSON
VINTAGE
BUELL
OTHER