Java集合排序方法comparable和comparator

本文介绍了Java中实现集合排序的两种方式:通过Comparable接口的compareTo方法和Comparator接口的compare方法。讲解了如何使用Collections.sort()对ArrayList和LinkedList排序,以及在TreeSet和TreeMap中如何利用排序功能。强调了实体类实现Comparable接口对于TreeSet添加操作的重要性,并总结了Java集合排序的常见应用场景。
摘要由CSDN通过智能技术生成

java实现排序工具类

package com.bootdo.common.config.collection.test.sort;
import java.util.Comparator;
import java.util.List;
/**
 * @ClassName :   Utils
 * @Description: java sort和list 集合实现排序
 * @Author: 13394
 * @CreateDate: 2018/10/25 21:16
 * @Version: 1.0
 */
public class Utils {
    /**
     * 数组的排序 (降序)
     * @param arr
     */
    public static void sort(Object[] arr){
        //从大到小排序 降序
        boolean sorted= true;
        int len =arr.length;
        for(int j=0;j<len-1;j++){ //趟数
            sorted =true; //假定有序
            for(int i=0;i<len-1-j;i++){ //次数
                if(((Comparable)arr[i]).compareTo(arr[i+1])<0){
                    Object temp = arr[i];
                    arr[i] =arr[i+1];
                    arr[i+1] =temp;
                    sorted =false; //假定失败
                }
            }
            if(sorted){ //减少趟数
                break;
            }
        }

    }

    /**
     * 数组排序 (使用泛型方法)
     */
  public static <T extends Comparable<T>> void sort(T[] arr){
      //从大到小排序 降序
      boolean sorted= true;
      int len =arr.length;
      for(int j=0;j<len-1;j++){ //趟数
          sorted =true; //假定有序
          for(int i=0;i<len-1-j;i++){ //次数
              if(((Comparable)arr[i]).compareTo(arr[i+1])<0){
                  T temp = arr[i];
                  arr[i] =arr[i+1];
                  arr[i+1] =temp;
                  sorted =false; //假定失败
              }
          }
          if(sorted){ //减少趟数
              break;
          }
      }
  }
    /**
     * 数组的排序 (降序)+Comparator接口
     * @param arr
     */
  public static <T> void sort(Object[] arr, Comparator<T> com  ){
      boolean sorted=false;
      int len=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值