Java对List进行排序的两种实现方法
2016-12-21 10:58
796 查看
前言
Java.util包中的List接口继承了Collection接口,用来存放对象集合,所以对这些对象进行排序的时候,要么让对象类自己实现同类对象的比较,要么借助比较器进行比较排序。
学生实体类,包含姓名和年龄属性,比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。
第一种:实体类自己实现比较
(实现comparable接口:
public interface Comparable<T>,里面就一个方法声明:
public int compareTo(T o);)
示例代码:
public class Student implements Comparable<Student>{ private String name; private int age; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Student o) { // TODO Auto-generated method stub int flag = this.name.compareTo(o.name); if(flag == 0) { flag = this.age - o.age; } return flag; } }
然后利用List类的
sort(Comparator<? super E> c)方法或
java.util.Collections工具类的
sort(List<T> list)(其实里面就一句:
list.sort(null);)进行排序:
List<Student> students = new ArrayList<Student>(); students.add(new Student("a",10)); students.add(new Student("b",12)); students.add(new Student("b",11)); students.add(new Student("ac",20)); students.sort(null); //Collections.sort(students);
结果:
a 10 ac 20 b 11 b 12
第二种:借助比较器进行排序。
示例代码:
public class Student { private String name; private int age; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
比较器
java.util.Comparator类是一个接口(
public interface Comparator<T>),包含
int compare(T o1, T o2);等方法:
我们的比较器要实现该接口并实现
compare方法:
private class StudentComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub int flag = o1.getName().compareTo(o2.getName()); if(flag == 0) { flag = o1.getAge() - o2.getAge(); } return flag; } }
比较的时候可以利用List的
sort(Comparator<? super E> c)方法(或者
java.util.Collections工具类的
sort(List<T> list, Comparator<? super T> c)方法)进行排序。
List<Student> students = new ArrayList<Student>(); students.add(new Student("a",10)); students.add(new Student("b",12)); students.add(new Student("b",11)); students.add(new Student("ac",20)); Test t = new Test(); students.sort(t.new StudentComparator()); //Collections.sort(students, t.new StudentComparator()); for(Student student : students) { System.out.println(student.getName()+" "+student.getAge()); }
结果跟第一种方法一样:
a 10 ac 20 b 11 b 12
总结
以上就是关于Java中对List进行排序的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
相关文章推荐
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- 用Java集合中的Collections.sort方法对list排序的两种方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- Java:对集合中的对象进行排序需要实现Interface Comparable接口并实现int compareTo(T o)方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- 用Java集合中的Collections.sort方法如何对list排序(两种方法)
- Java集合中List的Sort()方法进行排序
- java Collections.sort()实现List排序的默认方法和自定义方法
- java 实现List对象中按某种方式进行排序
- Java实现根据List中对象的相应属性进行排序
- java中对集合或数组进行排序有两种方法:Comparable 与 Comparator
- Java中对list元素进行排序的方法详解
- 用Java集合中的Collections.sort()方法对list排序的两种方法
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- Java中对List集合排序的两种方法