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

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

使用自定義標準對 java 8 上的對象列表進行排序

使用自定義標準對 java 8 上的對象列表進行排序

忽然笑 2023-10-12 17:02:43
我有一個清單MyObjectList<MyObject> myObjects;模型類在哪里MyObject,如下所示public class MyObject{private String fName;private String lname;private String code;//getter setter}比方說,代碼有四種可能的值ABC,DEF,XYZ and PQR。現在我想根據以下標準對列表進行排序。所有具有代碼值的對象都XYZ應該放在第一位,然后是PQR,ABC和DEF。XYZ質量評估報告ABCDEF如果可能的話,我想使用 java 8 來實現這一點。我怎樣才能對我的ArrayList進行排序?
查看完整描述

2 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

如果您的代碼變量只能采用四個可能的值,您可以將它們保存在映射中,并在對列表進行排序時比較這些值:


public static void main(String[] args) {             

    List<MyObject> myObjects = new ArrayList<>();

    myObjects.add(new MyObject("fName1", "lname1", "ABC"));

    myObjects.add(new MyObject("fName2", "lname2", "PQR"));

    myObjects.add(new MyObject("fName3", "lname3", "XYZ"));

    myObjects.add(new MyObject("fName4", "lname4", "DEF"));


    Map<String,Integer> map = new HashMap<>();

    map.put("XYZ", 1);

    map.put("PQR", 2);

    map.put("ABC", 3);

    map.put("DEF", 4);


    Comparator<MyObject> sortByCode = (obj1,obj2)->Integer.compare(map.get(obj1.code), map.get(obj2.code));

    System.out.println("Before sorting");

    System.out.println(myObjects);


    System.out.println("After sorting");

    myObjects.sort(sortByCode);

    System.out.println(myObjects);

}


查看完整回答
反對 回復 2023-10-12
?
繁華開滿天機

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

您需要創建自己的實例來根據您的邏輯Comparator比較實例:MyObject


Comparator<MyObject> cmp = (o1, o2) ->{

    //Implement comparison logic here

    //Compare o1 and o2 and return -1,0, or 1 depending on your logic

};

然后給出一個像這樣的列表:


List<MyObject> listToSort = ...

您可以使用舊函數對其進行就地排序Collections.sort():


Collections.sort(listToSort, cmp);

或者,如果您愿意,可以使用 Java 8 流:


listToSort.stream().sorted(cmp).collect(Collectors.toList()); //Using streams


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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