文章目录
前言例子场景——根据年龄升序排序自定义对象代码测试
参考资料
前言
Java 中所有数字类型的基本类都可以使用 Arrays.sort 方法进行排序,有时候对于自定义类,我们也会有排序的需求,本文就此举一个简单的例子。
例子场景——根据年龄升序排序
假设我们有一组自定义对象,然后需要对此按照年龄从小到大进行排序,我们只需要这个自定义对象实现 Comparable 接口并覆盖重写 compareTo 方法即可。
自定义对象代码
package del
;
import java
.util
.ArrayList
;
import java
.util
.Arrays
;
import java
.util
.Collections
;
import java
.util
.List
;
public class User implements Comparable<User>{
private int age
;
private String name
;
public int getAge() {
return age
;
}
public void setAge(int age
) {
this.age
= age
;
}
public String
getName() {
return name
;
}
@Override
public String
toString() {
return name
+"的年龄是"+age
;
}
public void setName(String name
) {
this.name
= name
;
}
@Override
public int compareTo(User o
) {
if(o
== null
){
return -1;
}
return this.getAge()>o
.getAge()?1:-1;
}
}
测试
public static void main(String
[] args
){
testCollectionsSort();
testArraysSort();
}
private static void testCollectionsSort(){
User u1
= new User();
u1
.setAge(10);
u1
.setName("Jecket1");
User u2
= new User();
u2
.setAge(5);
u2
.setName("Jecket2");
User u3
= new User();
u3
.setAge(1);
u3
.setName("Jecket3");
List list
= new ArrayList();
list
.add(u1
);
list
.add(u2
);
list
.add(u3
);
System
.out
.println(list
.toString());
Collections
.sort(list
);
System
.out
.println(list
.toString());
}
private static void testArraysSort(){
User u1
= new User();
u1
.setAge(10);
u1
.setName("Jecket1");
User u2
= new User();
u2
.setAge(5);
u2
.setName("Jecket2");
User u3
= new User();
u3
.setAge(1);
u3
.setName("Jecket3");
User
[] array
= new User[3];
array
[0] = u1
;
array
[1] = u2
;
array
[2] = u3
;
System
.out
.println(Arrays
.toString(array
));
Arrays
.sort(array
);
System
.out
.println(Arrays
.toString(array
));
}
测试结果
[Jecket1的年龄是10, Jecket2的年龄是5, Jecket3的年龄是1]
[Jecket3的年龄是1, Jecket2的年龄是5, Jecket1的年龄是10]
[Jecket1的年龄是10, Jecket2的年龄是5, Jecket3的年龄是1]
[Jecket3的年龄是1, Jecket2的年龄是5, Jecket1的年龄是10]
参考资料
[1]、《Effective Java 第2版》