1

我有包含自定义数据类的 ArrayList。

ArrayList<MyData> list

自定义数据类有几个字段

class MyData {
   private int num;
   private String name;

   etc....

   getter/setter...
}

我想按字段排序列表(例如:num)

Objecitive-C 有 NSSortDescriptor 可以对对象进行排序。

NSSortDescriptor 类参考

有其他选择吗?或其他解决方案?

4

4 回答 4

2

您可以使用 Comparable 和 Comparator 接口..以及使用 Collection.sort()。

如果您使用自定义类型的集合(即不是原始类型),则需要实现 Comparable 和 Comparator 接口。

有关详细示例,请查看http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

希望这篇文章对你有所帮助。

于 2013-03-08T03:48:16.503 回答
1

java.util.Comparator加上java.util.Collection.sort应该可以解决问题。

您也可以MyData实现java.util.Comparable并使用其他排序方法,但这并不那么灵活。

于 2013-03-08T02:59:53.870 回答
1

Java中没有类似的东西NSSortDescriptor:Java排序使用的风格更类似于类的sortUsingComparator:方法NSMutableArray

Collections.sort(list, new Comparator<MyData>() {
    // This is similar to the comparator block of Cocoa
    public int compare(MyData o1, MyData o2) {
        // Put the comparison code here
        ...
    }
});
于 2013-03-08T03:00:03.197 回答
1

实现ComparableComparator并使用Collections.sort()

可比

public class MyClass implements Comparable<MyClass>{
    public int x;

    public int compareTo(MyClass mc){
        return x - mc.x;
    }
}

比较器

public class MyClass{
    public int x;
}

public class MyClassComparator implements Comparator<MyClass>{
    public int compare(MyClass mc1, MyClass mc2){
        return mc1.x - mc2.x;
    }
}
于 2013-03-08T03:00:22.263 回答