list集合实现自定义排序 | 您所在的位置:网站首页 › 自定义字符串类 › list集合实现自定义排序 |
1.基本数据类型的简单排序
public class Demo01 {
public static void main(String[] args) {
List list = Arrays.asList(1,5,2,0,-1);
Collections.sort(list);
System.out.println(list);
}
}
(1)Collections.sort(list)分析: @SuppressWarnings("unchecked") public static void sort(List list) { list.sort(null); }需要继承Comparable,在我们的基本数据类型的包装类中,都是实现了Comparable接口,同时实现了compareTo方法。 2.实体类按照属性排序(1)自定义类: //首先必须要实现Comparable接口,并重写compareTo方法--》compareTo是进行排序的一种规范 //一般不建议使用,真实开发中,实体类尽量不要去进行修改 class Emp implements Comparable{ private Integer id; private String name; public Emp() { } public Emp(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Emp{" + "id=" + id + ", name='" + name + '\'' + '}'; } @Override public int compareTo(Object o) { //需要强制转化 Emp emp = (Emp)o; return this.id.compareTo(emp.id); } } public class Demo01 { public static void main(String[] args) { List list = Arrays.asList(new Emp(5,"张三"),new Emp(2,"王五")); Collections.sort(list); System.out.println(list); } }和第一个案例的Integer是一样的,只要实现Comparable即可使用Collections.sort方法进行排序。 (2)此方法推荐使用: public class Demo01 { public static void main(String[] args) { List list = Arrays.asList(new Emp(5,"张三"),new Emp(2,"王五")); Collections.sort(list, new Comparator() { @Override public int compare(Emp o1, Emp o2) { return o1.getId().compareTo(o2.getId()); } }); System.out.println(list); } } ---------------源码分析(Collections)------------------- public static void sort(List list, Comparator c) { list.sort(c); }可以通过匿名内部类的形式,直接重写compareTo方法。 |
CopyRight 2018-2019 实验室设备网 版权所有 |