我读过关于使用比较器对ArrayList进行排序的文章,但在人们使用的所有示例中 compareTo
根据一些研究,这是一种用于字符串的方法。
我想按自定义对象的属性之一对其arraylist进行排序:日期对象( 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);
...
}
29条答案
按热度按时间mfpqipee1#
我已经尝试了很多不同的解决方案在互联网上,但解决方案,这对我来说是可行的在下面的链接。
https://www.java67.com/2017/07/how-to-sort-arraylist-of-objects-using.html
h79rfbju2#
这些代码片段可能很有用。如果要对我的案例中的对象进行排序,我希望按volumename进行排序:
这很有效。我在jsp中使用它。
pkmbmrz73#
customcomparator类必须实现java.util.comparator才能使用。它还必须覆盖compare()和equals()
compare()必须回答以下问题:对象1是否小于、等于或大于对象2?
完整文档:http://java.sun.com/j2se/1.5.0/docs/api/java/util/comparator.html
dgsult0t4#
您可以尝试点Guava:
thtygnil5#
java 8 lambda表达式
或
gj3fmq9x6#
使用java 8,您可以使用比较器的方法参考:
ni65a41a7#
由于技术每天都在出现,答案会随着时间而改变。我看了一下lambdaj,看起来很有趣。
您可以尝试使用lambdaj解决这些任务。你可以在这里找到它:http://code.google.com/p/lambdaj/
这里有一个例子:
排序迭代
用lambda排序
当然,这种美观会影响性能(平均2倍),但是您能找到更可读的代码吗?
kgqe7b3p8#
w6mmgewl9#
使用Java8的最佳简单方法是使用英文字母排序
类实现
分类
如果要对包含非英语字符的字母表进行排序,可以使用区域设置。。。下面的代码使用土耳其语字符排序。。。
类实现
分类
aiazj4mn10#
函数和方法参考
这个
Collections.sort
方法可以对List
使用Comparator
你通过了。那个Comparator
可以使用Comparator.comparing
方法,其中可以根据需要传递方法引用Function
. 幸运的是,实际的代码比这个描述简单得多,也短得多。对于java 8:
或
另一种方法是
czq61nw111#
您可以使用Java8进行排序
aoyhnmkz12#
从…起
Java 8
从那时起,我们不必使用Collections.sort()
直接的。List
接口有一个默认值sort()
方法:看见http://visvv.blogspot.in/2016/01/sorting-objects-in-java-8.html.
5lwkijsr13#
Java8Lambda缩短了排序。
k0pti3hp14#
您可以使用bean比较器对自定义类中的任何属性进行排序。
h9a6wy2h15#
是的,这是可能的,比如在这个答案中,我按属性排序
v
班上的IndexValue
```// Sorting by property v using a custom comparator.
Arrays.sort( array, new Comparator(){
public int compare( IndexValue a, IndexValue b ){
return a.v - b.v;
}
});