我有包含自定义数据类的 ArrayList。
ArrayList<MyData> list
自定义数据类有几个字段
class MyData {
private int num;
private String name;
etc....
getter/setter...
}
我想按字段排序列表(例如:num)
Objecitive-C 有 NSSortDescriptor 可以对对象进行排序。
有其他选择吗?或其他解决方案?
我有包含自定义数据类的 ArrayList。
ArrayList<MyData> list
自定义数据类有几个字段
class MyData {
private int num;
private String name;
etc....
getter/setter...
}
我想按字段排序列表(例如:num)
Objecitive-C 有 NSSortDescriptor 可以对对象进行排序。
有其他选择吗?或其他解决方案?
您可以使用 Comparable 和 Comparator 接口..以及使用 Collection.sort()。
如果您使用自定义类型的集合(即不是原始类型),则需要实现 Comparable 和 Comparator 接口。
有关详细示例,请查看http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/
希望这篇文章对你有所帮助。
java.util.Comparator加上java.util.Collection.sort应该可以解决问题。
您也可以MyData
实现java.util.Comparable并使用其他排序方法,但这并不那么灵活。
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
...
}
});
实现Comparable或Comparator并使用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;
}
}