C#自定义对象排序(数组/ArrayList)
2014-11-04 13:26
369 查看
http://www.cnblogs.com/irvinow/archive/2011/05/01/2033942.html
当数组或ArrayList的元素为自定义类时,只要该类实现了Comparable接口,就可以进行排序。
以下面的自定义类MyClass为例:
class MyClass implements Comparable {
private String name="";
private int value = 0;
public MyClass() {
}
public MyClass(int value,String name) {
this.value = value;
this.name=name;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int compareTo(Object o) {
MyClass tgt = (MyClass)o;
return ( this.value < tgt.getValue() ? -1 : ( this.value == tgt.getValue() ? 0 : 1));
}
};
若以数组的方式进行排序,方法如下:
MyClass[] test = new MyClass[5];
test[0] = new MyClass(5,"five");
test[1] = new MyClass(2,"two");
test[2] = new MyClass(3,"three");
test[3] = new MyClass(1,"one");
test[4] = new MyClass(4,"four");
java.util.Arrays.sort(test); //Sort进行的是升序排列,打印test的结果为1,2,3,4,5
若以ArrayList的方式进行排序,方法如下:
ArrayList test= new ArrayList();
for(int i=1; i<=5; i++){
test.add(new MyClass(i,"Name"));
}
Collections.sort(test); //Sort进行的是升序排列,打印test的结果为1,2,3,4,5
Collections.reverse(test); //Sort进行的是降序排列,打印test的结果为5,4,3,2,1
当数组或ArrayList的元素为自定义类时,只要该类实现了Comparable接口,就可以进行排序。
以下面的自定义类MyClass为例:
class MyClass implements Comparable {
private String name="";
private int value = 0;
public MyClass() {
}
public MyClass(int value,String name) {
this.value = value;
this.name=name;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int compareTo(Object o) {
MyClass tgt = (MyClass)o;
return ( this.value < tgt.getValue() ? -1 : ( this.value == tgt.getValue() ? 0 : 1));
}
};
若以数组的方式进行排序,方法如下:
MyClass[] test = new MyClass[5];
test[0] = new MyClass(5,"five");
test[1] = new MyClass(2,"two");
test[2] = new MyClass(3,"three");
test[3] = new MyClass(1,"one");
test[4] = new MyClass(4,"four");
java.util.Arrays.sort(test); //Sort进行的是升序排列,打印test的结果为1,2,3,4,5
若以ArrayList的方式进行排序,方法如下:
ArrayList test= new ArrayList();
for(int i=1; i<=5; i++){
test.add(new MyClass(i,"Name"));
}
Collections.sort(test); //Sort进行的是升序排列,打印test的结果为1,2,3,4,5
Collections.reverse(test); //Sort进行的是降序排列,打印test的结果为5,4,3,2,1
相关文章推荐
- 自定义对象排序(数组/ArrayList)
- [原创]详述IComparer,IComparable接口,实现自定义方法比较对象大小并排序(C#)
- C#基础之数组排序,对象大小比较
- java对ArrayList中对象按照自定义规则排序
- C#中数组,ArrayList与List对象的区别
- 如何实现自定义类对象数组的排序
- 数组自定义排序,判断对象是否为空!
- A.5.1-C# 中的 数组(ArrayList)对象
- C#中数组,ArrayList与List对象的区别
- [转]C#中数组,ArrayList与List对象的区别
- 针对数组中自定义的NSObject对象按照某个属性的排序
- .NET/C#中对自定义对象集合进行自定义排序的方法
- C#基础之数组排序,对象大小比较
- C#基础之数组排序,对象大小比较
- C#中数组,ArrayList与List对象的区别
- C#对象数组排序方法
- C#基础:通过委托给任何对象数组进行排序
- C#中数组,ArrayList与List对象的区别
- C#基础之数组 (排序,对象大小比较)
- C#中数组,ArrayList与List对象的区别