java集合排序总结

来源:互联网 发布:java项目开发小 组长 编辑:程序博客网 时间:2024/06/12 02:17

Java集合排序最常用的实现方式有两种,面试中也是被经常问到的两种实现方式区别,自己也是写了个小例子来加深一下理解,先说一下这种排序:

  1. Comparable
    在集合内部定义的方法实现排序,需要排序的类实现该接口,内部实现compareto方法,这个方法我们经常比较String的时候会用到,那是因为String本身就实现了Comparable接口。这种比较方法适用于某一类的固定比较,比较学生的分数,就经常会用来作比较,使用也比较简单,直接Collectios.sort(list)即可。
  2. Comparator
    在集合外部实现的排序,也就是说需要比较的实体类不用做任何变化,单独新建一个比较类,实现Comparator接口,使用的时候直接list.sort(定义的类),即可,还比如说学生,除了分数排序外,难免会用姓名,年龄排序,这样的话Comparable就实现不了,那就可以新建一个外部的比较类。

两种排序方法具体还是要根据实际需要来选取,写了个小例子来加深自己的理解,也方便以后面试的时候能比较按照自己的理解回答

package com.zhh.ListDemo;

public class Student implements Comparable<Student> {public Student(){}public Student(String name,int age,int score){    this.name=name;    this.age=age;    this.score=score;}private String name;private int age;private int score;public int compareTo(Student stu) {    return stu.age-this.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;}public int getScore() {    return score;}public void setScore(int score) {    this.score = score;}@Overridepublic String toString() {    return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";}

}
package com.zhh.ListDemo;

import java.util.Comparator;public class StudenScoreComparator implements Comparator<Student> {public int compare(Student stu1, Student stu2) {    return stu1.getScore()-stu2.getScore();}

}
package com.zhh.ListDemo;

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class ListOrderDemo {public static void main(String[] args) {    List<Student> list = new ArrayList<Student>();    Student stu1 = new Student("stu1",1,3);    Student stu2 = new Student("stu2",3,1);    Student stu3 = new Student("stu2",2,5);    list.add(stu3);    list.add(stu1);    list.add(stu2);    System.out.println(list);    Collections.sort(list);    System.out.println(list);    list.sort(new StudenScoreComparator());    System.out.println(list);}

}

原创粉丝点击