自定义对象排序(数组/ArrayList)
2011-05-01 16:40
435 查看
当数组或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
以下面的自定义类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
相关文章推荐
- C#自定义对象排序(数组/ArrayList)
- 对jsonArray数组存储的对象做自定义按多个值排序
- 实现Comparable接口对存放自定义对象列表(数组)进行排序
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 针对数组中自定义的NSObject对象按照某个属性的排序
- iOS--自定义相册---对象数组按照时间戳排序
- 如何实现自定义类对象数组的排序
- 集合框架_ArrayList存储自定义对象并排序案例
- java对ArrayList中对象按照自定义规则排序
- 集合框架-ArrayList集合存储自定义对象的排序案例
- 如何实现自定义类对象数组的排序
- Java自定义对象数组、集合排序
- 数组自定义排序,判断对象是否为空!
- OBjective-C:在可变数组NSMutableArray中添加相同对象后,进行自定义的排序方式输出
- 排序数组中的自定义对象
- 【代码积累】对ArrayList<TwoTuple<Integer,Double>>对象自定义排序
- Java基础知识强化之集合框架笔记69:Collections类之ArrayList存储自自定义对象并排序的案例
- Arraylist中对象属性的排序
- javscript巧用对象特性去掉数组重复项并排序
- C#数组排序以及比较对象的大小