如何按对象属性对 ArrayList 进行排序? [复制]
Posted
技术标签:
【中文标题】如何按对象属性对 ArrayList 进行排序? [复制]【英文标题】:how to sort an ArrayList by its objects properties? [duplicate] 【发布时间】:2012-08-05 21:57:46 【问题描述】:假设我有一个自定义对象的 ArrayList,例如
class fileOjb
String path;
String format;
int size;
int dateadd;
我应该如何排序 - 路径、格式、大小或添加日期?
谢谢!
【问题讨论】:
【参考方案1】:您需要编写自己的comparator 并调用 Collections.sort(yourComparator)
例如:
class YourComparator implements Comparator<MyObj>
public int compare(MyObj o1, MyObj o2)
return o1.getyourAtt() - o2.getyourAtt();
NOTE: Cast o1 and 02 to your object type.
EDIT: Based on Ted comment, update to generics, now don't need cast
【讨论】:
但是@thinksteep 如果没有代码示例我怎么能做到这一点:) @Frank Sposaro http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html 最好使用泛型类型而不是原始类型和强制类型转换。 @kw4nta 您的链接无效。我对刚刚实现的 Comparator 答案非常满意。但我看到请求代码是下一个问题。 @FrankSposaro:添加了所有相关和必需的参考资料。【参考方案2】:这里是代码示例。用于按dateAdded
排序。
按其他属性排序..您必须首先确定您的criteria
。
(字符串path1
大于path2
的条件是什么)
public class MyComparableByDateAdded implements Comparator<fileOjb>
@Override
public int compare(fileOjb o1, fileOjb o2)
return (o1.dateAdd>o2.dateAdd ? -1 : (o1.dateAdd==o2.dateAdd ? 0 : 1));
Collections.sort(list, new MyComparableByDateAdded());
【讨论】:
【参考方案3】:实现Comparator<fileObj>
并使用Collections.sort(list, comparator)
对列表进行排序;方法
【讨论】:
以上是关于如何按对象属性对 ArrayList 进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章