[英]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.