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