1实体类对象。
要想实现自然排序就需要实现Comparable接口,重写comparaTo()方法,
定制排序就不用实现Comparable接口,重写comparaTo()方法。直接采用匿名内部类new Comparator,重写compara()方法。
// 泛型为需要排队的对象
public class Emp implements Comparable<Emp>{
private Long id;
private String name;
public Emp() {
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public Emp(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* 实现comparable接口重写comparaTo方法
* 实现自然排序
* */
@Override
public int compareTo(Emp o) {
// 自带方法,通过id进行排序
return this.getId().compareTo(o.getId());
// 会根据大于0小于0等于0实现升序降序
//Long diff = this.getId() - o.getId();
//return diff.intValue();
}
}
2测试类
public class SortTest {
// 第一种实现自然排序【实体类实现Comparable接口,重写comparaTo()方法】
public static void listSort(){
// 转换成集合对象
List<Integer> arrs = Arrays.asList(1,5,4,8);
//按照自然顺序的升续排序,列表中的元素必须实现 Comparable 接口 , Integer是实现了的
Collections.sort(arrs);
arrs.forEach(System.out::println);
}
// 第二种实现,直接采用匿名内部类new Comparator,重写compara()方法【实体类不需要实现和重写】
public static void empListSort(){
List<Emp> arrs = Arrays.asList(
new Emp(10L,"xx"),
new Emp(3L,"xx"),
new Emp(4L,"xx"),
new Emp(7L,"xx") );
//按照定制顺序的升续排序,列表中的元素必须实现 Comparable 接口 , Integer是实现了的
Collections.sort(arrs,new Comparator<Emp>(){
@Override
public int compare(Emp o1, Emp o2) {
return o1.getId().compareTo(o2.getId());
}
});
arrs.forEach(System.out::println);
}
// main方法直接进行测试
public static void main(String[] args) {
listSort(); // 自然排序
empListSort(); // 定制排序
}
}