TreeSet集合的排序

一、使用Comparator比较器:

import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
class Student{
    String name;
    int score;
	public Student(String name, int score) {
		super();
		this.name = name;
		this.score = score;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.name+" "+this.score;
	}
    
}
public class Main{
    public static void main(String[] args) {
    	Scanner cin = new Scanner(System.in);
    	Student [] s = {
    			new Student("skh",100),
    			new Student("xiaoming",98),
    			new Student("xiaohong",99),
    			new Student("azxx",100),
    			new Student("xh",99),
    			new Student("bz",100),
    			
    	};
    TreeSet <Student> set = new TreeSet<Student>(new Comparator<Student>() {

		@Override
		public int compare(Student a, Student b) {
			int j = b.score - a.score;
			if(j==0) {
		return a.name.compareTo(b.name);
			}
			else
				return j;
	}
    });
    for(Student i:s) {
    	set.add(i);
    }
    for(Student i:set) {
    	System.out.println(i);
    }
   }     
}

在这里实现按照成绩降序输出,如果成绩相同则按姓氏来排序,输出结果:

azxx 100
bz 100
skh 100
xh 99
xiaohong 99
xiaoming 98

二、使用Comparable接口方式来排序:

import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
class Student implements Comparable<Student>{
    String name;
    int score;
	public Student(String name, int score) {
		super();
		this.name = name;
		this.score = score;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.name+" "+this.score;
	}
	@Override
	public int compareTo(Student b) {
		int j = b.score - this.score;
		if(j==0) {
	return this.name.compareTo(b.name);
		}
		else
			return j;
	}
    
}
public class Main{
    public static void main(String[] args) {
    	Scanner cin = new Scanner(System.in);
    	Student [] s = {
    			new Student("skh",100),
    			new Student("xiaoming",98),
    			new Student("xiaohong",99),
    			new Student("azxx",100),
    			new Student("xh",99),
    			new Student("bz",100),
    			
    	};
    TreeSet <Student> set = new TreeSet<Student>();
    for(Student i:s) {
    	set.add(i);
    }
    for(Student i:set) {
    	System.out.println(i);
    }
   }     
}

输出结果:

azxx 100
bz 100
skh 100
xh 99
xiaohong 99
xiaoming 98

猜你喜欢

转载自blog.csdn.net/z_xindong/article/details/88605213