java – 按属性排序自定义对象的ArrayList
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 按属性排序自定义对象的ArrayList,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1714字,纯文字阅读大概需要3分钟。
内容图文
![java – 按属性排序自定义对象的ArrayList](/upload/InfoBanner/zyjiaocheng/717/fee256174a8b4c3b8213cbd9b7e19385.jpg)
我读到了使用比较器对ArrayLists进行排序,但在所有示例中,人们使用compareTo,根据一些研究,这是一个字符串的方法.
我想通过它们的一个属性对自定义对象的ArrayList进行排序: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);
...
}
解决方法:
自date实现comparable以来,它就像String一样有一个compareTo方法.
所以你的自定义comparator可能如下所示:
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
compare()方法必须返回一个int,因此无法直接返回一个类似于计划的布尔值.
你的排序代码就像你写的那样:
Collections.sort(Database.arrayList, new CustomComparator());
如果你不需要重用你的比较器,写一个稍微短一点的方法是将它写成内联匿名类:
Collections.sort(Database.arrayList, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
});
自java-8年起
您现在可以使用lambda expression为比较器以较短的形式编写最后一个示例:
Collections.sort(Database.arrayList,
(o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
List有一个sort(comparator)方法,所以你可以进一步缩短它:
Database.arrayList.sort((o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
这是一个常见的习惯用法,即a built-in method为具有Comparable键的类生成Comparator:
Database.arrayList.sort(Comparator.comparing(MyObject::getStartDate));
所有这些都是等效的形式.
内容总结
以上是互联网集市为您收集整理的java – 按属性排序自定义对象的ArrayList全部内容,希望文章能够帮你解决java – 按属性排序自定义对象的ArrayList所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。