美文网首页
Java排序

Java排序

作者: 正经龙 | 来源:发表于2018-10-07 19:56 被阅读0次

前言

很多Java算法中都需要用到排序,但是往往在项目开发中并不需要自己实现排序功能,所以必须要熟练使用排序的库函数才能快速的开发出高质量的代码。这篇博客就记录以下常用的数组排序以及List排序,还有用处非常大的自定义对象数组排序

常见数据类型数组排序(正向)

Arrays.sort()

int []x = {3,8,3,2,4,1,4,1,2,2,6,5,5,3,5,1,0,2,4,2,0,4,8,4,2,1,9,4,3,9,6};
Arrays.sort(x);
for(int i =0;i<x.length;i++){
    System.out.print(x[i]);
}

  ##输出结果
  0011112222223333444444555668899

一般对象数组(String、Integer、Character)正向与逆向排序

Arrays.sort(Object[] obj)升序
Arrays.sort(Object[] obj , Comparator.reverseOrder())降序

Java里面并没有给int等自定义数据类型进行降序排列的函数

        String []strings = {"1","x","3","g","5","6","7"};
        Arrays.sort(strings,Comparator.reverseOrder());
        for(int i = 0;i<strings.length;i++){
            System.out.print(strings[i]);
        }

      ###输出
      xg76531

自定义对象数组排序

方法一:实现Comparable接口的compareTo(Object o),然后调用函数自动按照规则排序。

class Name implements Comparable<Name>{
    public String firstName;
    public String lastName;
    public Name(String first,String last){
        this.firstName = first;
        this.lastName = last;
    }
    @Override
    public int compareTo(Name o) {
        int lastCmp = firstName.compareTo(o.firstName);
        return(!(lastCmp==0)?lastCmp:lastName.compareTo(o.lastName));
    }
    public String toString(){
        return firstName + " " + lastName;
    }
}

##############    测试
Name names[] ={new Name("John","Muhaha"),new Name("Gao","Dev"),new Name("Susan","JInjiao")};
        Arrays.sort(names);
        for(int i = 0 ;i<names.length;i++){
            System.out.println(names[i].toString());
        }
################    输出
Gao Dev
John Muhaha
Susan JInjiao

方法二:自定义比较参数,在排序时传入新创建的比较参数实现比较效果(实现compare(Object o1,Object o2))

******自定义类********
class Name2{
    public String firstName;
    public String lastName;
    public Name2(String first,String last){
        this.firstName = first;
        this.lastName = last;
    }
    public String toString(){
        return firstName + " " + lastName;
    }
}
*******创建排序参数********
Comparator<Name2> comparator = new Comparator<Name2>() {
            @Override
            public int compare(Name2 o1, Name2 o2) {
                int bigger = o1.firstName.compareTo(o2.firstName);
                return (!(bigger==0)?bigger:o1.lastName.compareTo(o2.lastName));
            }
        };
******测试************
Arrays.sort(names2,comparator);
        for(int i = 0 ;i<names2.length;i++){
            System.out.println(names2[i].toString());
        }
******输出************
Wang Dev
Xing JInjiao
Yao Muhaha

相关文章

  • Java比较器(对象排序)

    Java实现排序的方式 自然排序:java.lang.Comparable 定制排序:java.lang.Comp...

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • Java 排序

    概述 ​对Java对数组对象进行排序,Java对排序问题的处理。Java排序一般包括基础排序和Lambda Com...

  • (306)排序-java实现的选择/插入/希尔排序

    引言 用java实现的选择排序、插入排序、希尔排序。 代码(java) 运行结果

  • 冒泡排序 选择排序

    冒泡排序 java 实现 C 实现 选择排序 java 实现 C 实现

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • Java之——利用Comparator接口对多个排序条件进行处理

    转载源出处 参考: JAVA Comparator 接口排序用法 JAVA Comparator 接口排序用法 ...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

网友评论

      本文标题:Java排序

      本文链接:https://www.haomeiwen.com/subject/ytcraftx.html