繁体   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