对集合中的数据进行相关排序(comparable接口)

实现方式一:

  将需要排序的类去实现Comparable<>接口

//student.java

package com.bjsxt.comparable;

/**
*   学生类
*/
public class Student implements Comparable<Student>{

    private String name;
    private char gender;
    private int age;
    private int score;

    public char getGender() {
		return gender;
	}

	public void setGender(char gender) {
		this.gender = gender;
	}

	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;
	}

    public Student(String name, char gender, int age, int score) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.score = score;
	}

	@Override
    public int compareTo(Student o) {//按照性别排序
        // TODO Auto-generated method stub
        return this.gender - o.gender;
    }
}

//Test1.java

package com.bjsxt.comparable;

import java.util.ArrayList;
import java.util.Collections;
/**
 * 实现Comparable接口来实现对象间属性的对比排序
 * @author taoyulong
 *
 */
public class Test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("张三",'男', 1, 189));
        students.add(new Student("李四", '女',6, 940));
        students.add(new Student("王五", '男',13, 170));
        students.add(new Student("赵六", '男',128, 380));

        System.out.println("排序前:");
        for (Student student : students) {
            System.out.println("姓名:"+student.getName()+" "+
            					"性别:"+student.getGender()+" "+
            					" 年龄:"+student.getAge()+" "+
            					" 成绩:"+student.getScore());
        }

        // 排序
        Collections.sort(students);

        System.out.println("排序后:");
        for (Student student : students) {
        	 System.out.println("姓名:"+student.getName()+" "+
 					"性别:"+student.getGender()+" "+
 					" 年龄:"+student.getAge()+" "+
 					" 成绩:"+student.getScore());
        }
    }
}  

实现方式二:

  通过实现Comparator的匿名内部类类对对象进行相关的排序

//students.java

package com.bjsxt.comparable;

/**
*   学生类
*/
public class Students{

    private String name;
    private char gender;
    private int age;
    private int score;

    public char getGender() {
		return gender;
	}

	public void setGender(char gender) {
		this.gender = gender;
	}

	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;
	}

    public Students(String name, char gender, int age, int score) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.score = score;
	}

	
}

//Test2.java

package com.bjsxt.comparable;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * 通过Comparator的匿名内部类来实现对对象中的属性进行排序
 * @author taoyulong
 *
 */
public class Test2 {
	public static void main(String[] args) {
        ArrayList<Students> students = new ArrayList<>();
        students.add(new Students("张三",'男', 1, 189));
        students.add(new Students("李四", '女',6, 940));
        students.add(new Students("王五", '男',13, 170));
        students.add(new Students("赵六", '男',128, 380));

        System.out.println("排序前:");
        for (Students student : students) {
            System.out.println("姓名:"+student.getName()+" "+
            					"性别:"+student.getGender()+" "+
            					" 年龄:"+student.getAge()+" "+
            					" 成绩:"+student.getScore());
        }

        // 排序
        Collections.sort(students,new Comparator<Students>() {

			@Override
			public int compare(Students o1, Students o2) {
				// TODO Auto-generated method stub
				return o1.getScore()-o2.getScore();
			}
        	
        });

        System.out.println("排序后:");
        
        for (Students student : students) {
       	 System.out.println("姓名:"+student.getName()+" "+
					"性别:"+student.getGender()+" "+
					" 年龄:"+student.getAge()+" "+
					" 成绩:"+student.getScore());
       }
        
	}
}

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted on 2018-07-09 15:30  Terlong  阅读(144)  评论(0)    收藏  举报

导航