如何按对象属性对ArrayList进行排序?

时间:2012-08-08 18:04:47

标签: java android

假设我有一个自定义对象的ArrayList,例如

class fileOjb
{
    String path;
    String format;
    int size;
    int dateadd;
}

我应该如何排序呢 - 路径,格式,大小或日期添加?

谢谢!

3 个答案:

答案 0 :(得分:7)

您需要编写自己的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

答案 1 :(得分: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());

答案 2 :(得分:0)

实施Comparator<fileObj>并使用Collections.sort(list, comparator)对列表进行排序;方法

相关问题