亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據具有特殊條件的多個字段對對象列表進行排序

根據具有特殊條件的多個字段對對象列表進行排序

海綿寶寶撒 2023-06-14 13:58:14
我正在嘗試根據兩個字段 [ Name , Old name ] 按升序對對象列表進行排序,其中Name字段值可以是破折號(“-”),如果名稱是破折號,那么它將被添加到列表的末尾. [像下面的順序:名稱:舊名稱]SENSITIVE: COMP Operations: COMP OperationsSENSITIVE: Court procedural documents: Court procedural documentsSENSITIVE: Staff matter: Staff MatterSPECIAL HANDLING: ETS Critical: ETS Critical-: ETS Limited-: EU Satellite Navigation matters-: Limited ETS Joint Procurement到目前為止,我得到了以下結果:-: ETS Limited-: EU Satellite Navigation matters-: Limited ETS Joint ProcurementSENSITIVE: COMP Operations: COMP OperationsSENSITIVE: Court procedural documents: Court procedural documentsSENSITIVE: Staff matter: Staff MatterSPECIAL HANDLING: ETS Critical: ETS Critical領域模型:class Marking {    String name;    String oldName;    public Marking(String name, String oldName) {        this.name = name;        this.oldName = oldName;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getOldName() {        return oldName;    }    public void setOldName(String oldName) {        this.oldName = oldName;    }    @Override    public String toString() {        return "Marking [name=" + name + ", oldName=" + oldName + "]";    }}和解決方案類:public class Solution {    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"));任何人都可以給我一些建議,如何將破折號名稱對象添加到列表的末尾,其中舊名稱應按升序排列。
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

這是我很快想到的一個選項:


  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;

        });


查看完整回答
反對 回復 2023-06-14
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

這是一個建議。順序很好,我們所做的就是取出所有以“-”開頭的元素并將它們從列表中刪除,然后將它們添加回末尾。這是低效的,但它是一種決心。


    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());

        }

    }


查看完整回答
反對 回復 2023-06-14
  • 2 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號