簡體   English   中英

如何在自定義arraylist Java中制作重復列表

[英]how to make list of duplicates in custom arraylist Java

我有一份狗的名單,上面有它們的名字、品種、年齡、體重和尾巴長度。 我已經按尾巴長度對列表進行了排序,現在應該按名稱對尾巴長度相同的狗進行排序。 例如,列表應如下所示:

Charlie  Golden   2years 3kg 2.0cm

Bob      Bulldog  3years 4kg 3.3cm

Lucy     Golden   4years 3kg 3.3cm 

Molly    Bulldog  5years 7kg 5.2cm

我有一個名為sortTail()的方法,它按尾長排序,還有一個sortName()方法,它按名稱排序。

sortTail()

ArrayList<Dog> dogs = new ArrayList<>();

sortName()

我應該怎么做才能只對尾巴長度相同的那些進行排序?

如果您的Dog實例在List ,則排序的最佳選擇是使用 Java 的Comparator類和List#sort 您可以使用Comparator的默認方法根據多個條件創建比較器。 例如,以下代碼將按尾巴長度對狗進行排序,然后按名稱對具有相同尾巴長度的狗進行排序:

List<Dog> dogs = // ...
dogs.sort(
    Comparator.comparing(Dog::getTailLength)
              .thenComparing(Dog::getName));

以防萬一您想實現自己的比較器或您的任務需要這樣做。 但是,SDJ 的答案應該比發明自行車更受歡迎:

Comparator<Dog> dogComparator = 
    (a,b) -> {
        if (a.getTailLength() == b.getTailLength()) 
            return a.getName().compareTo(b.getName());
        else 
            return 0;
    }


Collections.sort(dogs, dogComparator);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM