2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是我很快想到的一個(gè)選項(xiàng):
Collections.sort(markings, (o1, o2) -> {
int value = o1.getName().compareToIgnoreCase(o2.getName());
if(value == 0) {
return o1.getOldName().compareToIgnoreCase(o2.getOldName());
}
if(o1.getName().equals("-")) {
return 1;
}
if(o2.getName().equals("-")) {
return -1;
}
return value;
});

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是一個(gè)建議。順序很好,我們所做的就是取出所有以“-”開頭的元素并將它們從列表中刪除,然后將它們添加回末尾。這是低效的,但它是一種決心。
public static void main(String[] args) {
List<Marking> markings = new ArrayList<>();
markings.add(new Marking("-", "Limited ETS Joint Procurement"));
markings.add(new Marking("-", "EU Satellite Navigation matters"));
markings.add(new Marking("SENSITIVE: Court procedural documents", "Court procedural documents"));
markings.add(new Marking("SENSITIVE: COMP Operations", "COMP Operations"));
markings.add(new Marking("-", "ETS Limited"));
markings.add(new Marking("SENSITIVE: Staff matter", "Staff Matter"));
markings.add(new Marking("SPECIAL HANDLING: ETS Critical", "ETS Critical"));
markings.sort((o1, o2) -> {
int value = o1.getName().compareToIgnoreCase(o2.getName());
if (value == 0) {
return o1.getOldName().compareToIgnoreCase(o2.getOldName());
}
return value;
});
List<Marking> dashed = markings.stream().filter(marking -> marking.name.startsWith("-") || marking.oldName.startsWith("-"))
.collect(Collectors.toList());
markings.removeAll(dashed);
markings.addAll(dashed);
for (Marking marking : markings) {
System.out.println(marking.getName() + ": " + marking.getOldName());
}
}
添加回答
舉報(bào)