关于TreeSet的排序

Set集合存储特点:      

1):不允许元素重复.    

 2):不会记录元素的先后添加顺序.

----------------------------------------------------------------------------------------------

TreeSet集合底层才有红黑树算法,会对存储的元素默认使用自然排序(从小到大).  

注意: 必须保证TreeSet集合中的元素对象是相同的数据类型,否则报错

. ----------------------------------------------------------------------------------------------

TreeSet的排序规则:

自然排序(从小到大): TreeSet调用集合元素的compareTo方法来比较元素的大小关系,然后讲集合元素按照升序排列(从小到大).

注意:要求TreeSet集合中元素得实现java.util.Comparable接口.

package study3;

import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

public class RandomNumber {

	
	public static void main(String[] args) throws Exception {
        
		  
      
		
	        Scanner sc = new Scanner(System.in);
	        //11 10 20 40 32 67 40 20 89 300 400 15
	        System.out.println("input: ");
	        
	        Comparator<Integer> comparator = new Comparator<Integer>() {

				@Override
				public int compare(Integer o1, Integer o2) {
					
					return o1>o2?-1:o1==o2?0:1;
				}
			};
	     
	        while(sc.hasNext()){
	              
	            int num = sc.nextInt();
	                
	                      
	            TreeSet<Integer> set = new TreeSet<Integer>();
	            TreeSet<Integer> set1 = new TreeSet<>(comparator);
	            
	            for(int i = 0 ; i < num ;i++){
	                int curr = sc.nextInt();
	                set.add(curr);
	                set1.add(curr);
	            }
	            for(Integer i : set){
	                System.out.println("默认排序"+i);
	            }
	            
	            for(Integer i : set1){
	                System.out.println("倒排序"+i);
	            }
	        }
	    }
	
	
}

测试结果:

input: 
11 10 20 40 32 67 40 20 89 300 400 15
默认排序10
默认排序15
默认排序20
默认排序32
默认排序40
默认排序67
默认排序89
默认排序300
默认排序400
倒排序400
倒排序300
倒排序89
倒排序67
倒排序40
倒排序32
倒排序20
倒排序15
倒排序10
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值