【问题标题】:how to sort an ArrayList by its objects properties? [duplicate]如何按对象属性对 ArrayList 进行排序? [复制]
【发布时间】:2012-08-05 21:57:46
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: java android


    【解决方案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 如果没有代码示例我怎么能做到这一点:)
    • 最好使用泛型类型而不是原始类型和强制类型转换。
    • @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&lt;fileObj&gt; 并使用Collections.sort(list, comparator) 对列表进行排序;方法

      【讨论】:

        猜你喜欢
        • 2011-03-21
        • 2013-06-14
        • 2013-05-21
        • 1970-01-01
        • 2020-01-12
        • 2021-03-24
        • 2011-02-16
        • 2013-05-21
        相关资源
        最近更新 更多