我读过关于使用比较器排序数组列表的内容,但在所有的例子中,人们都使用了compareTo,根据一些研究,它是字符串的一种方法。
我想根据自定义对象的一个属性(Date对象)对其数组列表进行排序
(getStartDay())。通常我通过item1.getStartDate().before(item2.getStartDate())比较它们,所以我想知道我是否可以写一些像这样的东西:
public class CustomComparator {
public boolean compare(Object object1, Object object2) {
return object1.getStartDate().before(object2.getStartDate());
}
}
public class RandomName {
...
Collections.sort(Database.arrayList, new CustomComparator);
...
}
您可以在2016年德国斯图加特的Java论坛上看一看这个演讲。
只有少数幻灯片使用德语,99%的内容是“基于英语”的Java源代码;就像
someCollection.sort(
OurCustomComparator
.comparing(Person::getName)
.thenComparing(Person::getId)
);
其中OurCustomComparator使用默认方法(和其他有趣的想法)。如图所示,导致非常简洁的代码,以选择一些getter方法进行排序;以及超级简单的排序标准链接(或反转)。
如果你对java8感兴趣,你可以在那里找到很多材料来开始学习。
从Java 8开始,我们不需要直接使用Collections.sort()。List接口有一个默认的sort()方法:
List<User> users = Arrays.asList(user1,user2,user3);
users.sort( (u1, u2) -> {
return u1.getFirstName.compareTo(u2.getFirstName());});
见http://visvv.blogspot.in/2016/01/sorting -对象- - java 8.中的html。
您可以在2016年德国斯图加特的Java论坛上看一看这个演讲。
只有少数幻灯片使用德语,99%的内容是“基于英语”的Java源代码;就像
someCollection.sort(
OurCustomComparator
.comparing(Person::getName)
.thenComparing(Person::getId)
);
其中OurCustomComparator使用默认方法(和其他有趣的想法)。如图所示,导致非常简洁的代码,以选择一些getter方法进行排序;以及超级简单的排序标准链接(或反转)。
如果你对java8感兴趣,你可以在那里找到很多材料来开始学习。