菜鸟的学习之路(13) —TreeSet类的排序

一.TreeSet类解析:

         菜鸟的学习之路(13) —TreeSet类的排序_第1张图片

          1.TreeSet是依靠TreeMap实现的。

             2.TreeSet中不能有重复的元素,而且是有序排列的。

             3.自定义的类要想实现排序,实现Comparable接口,重写compareTo()方法。或者在构造方法中传入一个比较器,这个比较器实现Comparator接口,重写compare()方法。

 

             4.Comparator是在集合外部实现排序的。(Comparable是在集合内部实现排序的,大家可以搜一下)

                 5.对于java中自定义的类,TreeSet可以直接进行储存,因为像String、Integer等等这些类都实现了Comparable接口。

             6.对于自定义类,如果没有排序方法,那么TreeSet中只能存入一个该类的对象。

 

 

二.Comparable和Comparator的实现:

       Comparable:

 

          

public class Student implements Comparable{
     
	 int score;
	 String name;
	
	 public Student(int score,String name){
		 this.score = score;
		 this.name = name;
	 }
	// 返回负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。
	 public int compareTo(Object o) {
	    Student s = (Student)o;
	    
		return this.score-s.score;//升序   要是降序的话就把两个变量倒过来写。
	 }
	 public String toString(){
		 return "姓名:"+this.name+"   成绩:"+this.score;
	 }

}

测试类:

菜鸟的学习之路(13) —TreeSet类的排序_第2张图片

打印:

Comparator:

 

    

public class Student{
     
	 int score;
	 String name;
	
	 public Student(int score,String name){
		 this.score = score;
		 this.name = name;
	 }
	 public String toString(){
		 return "姓名 :"+this.name+"    成绩 :"+this.score;
	 }
	
}
class ComparableStudent implements Comparator{

	public int compare(Object o1, Object o2) {
		Student s1 = (Student)o1;
		Student s2 = (Student)o2;
		
		return s1.score-s2.score;
	}
}


 

测试类:

 

 菜鸟的学习之路(13) —TreeSet类的排序_第3张图片

  

打印:

        菜鸟的学习之路(13) —TreeSet类的排序_第4张图片

你可能感兴趣的:(java)