首页 > 编程语言 >Java中Collections.sort()方法详解

Java中Collections.sort()方法详解

时间:2022-11-27 11:01:45浏览次数:36  
标签:sort Java list Collections 方法 o2 o1

 

时间:2022/11/27

 

  在我们写算法题的时候有时需要对给定的List列表进行排序,这样方便之后的操作,此时我们可以用到Collections类中的sort方法,Java API文档中对该方法的定义如下:

  可以看到,这两个方法都是静态方法,如果要使用第一个的sort方法,那么传入的参数list中的泛型T必须要继承Comparable类,否则只能使用第二个的sort方法。在使用第二个sort方法时,除了需要传入要排序的list列表,还需要定义一个匿名内部类,在匿名内部类中实现compare方法,如下所示:

List<String> list = new ArrayList<>();
list.add("machi");
list.add("huangzhan");
System.out.println(list);
Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.compareTo(o2);
    }
});
System.out.println(list);    

输出的结果如下所示:

[machi, huangzhan]
[huangzhan, machi]

从中可以看出,sort方法默认是按照升序进行排序,也就是在匿名内部类的compare中,返回的值为正数,说明o1大于o2,那么o2会放到o1的前面,如果想要降序排序,需要添加一个负号。

需要补充的是,上面的写法可以通过Java中的lambda表达式进行简化:

Collections.sort(list, (o1, o2) -> o1.compareTo(o2));

 

标签:sort,Java,list,Collections,方法,o2,o1
From: https://www.cnblogs.com/machi12/p/16929134.html

相关文章

  • 【java技术总结】stream来处理分组问题
    1.使用Collectors.groupingBy(方法引用返回分组属性作为k)2.使用Collectors.groupingBy(方法引用返回分组属性作为k,Collectors的静态类返回值)3.使用reduce归并数据,reduc......
  • Java:Spring Boot整合mybatis-plus示例
    文档​​https://start.spring.io/​​mybatis-plus​​文档​​​|​​github​​maven​​文档​​p6spy​​文档​​​|​​github​​使用示例目录​​使用示......
  • JavaScript中String的match方法详解
     String.prototype.match()**String.prototype.match()方法返回通过一个正则表达式匹配到的字符串结果。**​​var='Thequickbrownfoxjumpsoverthelazydog.Itba......
  • Java程序运行机制、注释及标识符 关键字
    Java程序运行机制1.编写编写是指在Java开发环境中进行程序代码的编辑,最终生成后缀名为“.java”的Java源文件。2.编译编译是指使用Java编译器对源文件进行错误排查的过......
  • 面向对象的JavaScript框架 MooTools
    MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools从Prototype.js中汲取了许多有益的设计理......
  • .NET 4.0新增命名空间:System.Collections.Concurrent
    集合类的需求总是源源不断,因此,不管是1.0到2.0的泛型,还是3.0到4.0的并行(本文的并行指Concurrent,非Parallel),.NET每个版本总会伴随着一些集合类的增长。由于并行计算现在已......
  • Java: ArrayList
    The ArrayList classisaresizable array,whichcanbefoundinthe java.util package.Thedifferencebetweenabuilt-inarrayandan ArrayList inJava,......
  • Java: LinkedList
    The LinkedList classisalmostidenticaltothe ArrayList:importjava.util.LinkedList;publicclassMain{publicstaticvoidmain(String[]args){......
  • Java: Date and Time
    Javadoesnothaveabuilt-inDateclass,butwecanimportthe java.time packagetoworkwiththedateandtimeAPI.ClassDescriptionLocalDateRepresent......
  • Java: User Input (Scanner)
    The Scanner classisusedtogetuserinput,anditisfoundinthe java.util package.Tousethe Scanner class,createanobjectoftheclassandusean......