首页 > 编程语言 >Java排序算法Collections.sort

Java排序算法Collections.sort

时间:2024-11-22 18:43:01浏览次数:1  
标签:sort Java apple cherry list Collections durian

Java排序算法Collections.sort

package com.example.core.mydemo.javaDemo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CustomSortExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("cherry");
        list.add("durian");
        list.add("apple");
        list.add("banana");
        list.add("a");
        System.out.println("排序前:" + list);
//        Collections.sort(list);
        //倒序
//        Collections.sort(list, Comparator.reverseOrder());
        //[a, apple, banana, cherry, durian]
//        Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
        //[a, apple, banana, cherry, durian]
//        Collections.sort(list, Comparator.naturalOrder());
        //[banana, cherry, durian, a, apple]
//        Collections.sort(list, Comparator.comparingInt(String::hashCode));
        //[a, apple, banana, cherry, durian]
        Collections.sort(list, Comparator.comparing(s -> s));
        System.out.println("排序后:" + list);

        // 使用自定义Comparator进行排序
        Collections.sort(list, new LengthComparator());
        System.out.println("排序后2:" + list);
    }


}

class LengthComparator implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
//        return s1.length() - s2.length();       //[a, apple, cherry, durian, banana]
//        return s1.charAt(0) - s2.charAt(0);  //[apple, a, banana, cherry, durian]
        return s1.hashCode() - s2.hashCode();  //[banana, cherry, durian, a, apple]
    }
}

 

标签:sort,Java,apple,cherry,list,Collections,durian
From: https://www.cnblogs.com/oktokeep/p/18563455

相关文章

  • Java旋转算法Collections.rotate
    Java旋转算法Collections.rotatepackagecom.example.core.mydemo.javaDemo;importjava.util.ArrayList;importjava.util.Collections;/***原始集合:[1,2,3,4,5]*旋转后的集合:[4,5,1,2,3]*/publicclassRotateExample{publicstaticvoidmain(St......
  • Java Stream流以及常用方法详解
    目录一、Stream流是什么?二、stream的操作一、Stream流是什么?Stream流是Java8中的一个新特性,它提供了一种处理集合和数组的方式。Stream流可以让我们以一种更加简洁、高效、可读性更强的方式来处理数据。,这个版本新增的Stream,配合同版本出现的Lambda,给我们操作集合(Coll......
  • Java根据前端返回的字段名进行查询数据的方法
    在Java后端开发中,根据前端返回的字段名动态查询数据库是一种常见的需求。这种需求通常通过使用反射和动态SQL来实现。下面是一个完整的代码示例,它展示了如何根据前端返回的字段名动态查询数据库中的数据。一、根据前端返回的字段名动态查询数据库中的数据示例1.准备工作(1)数据库......
  • JAVA-PTA题目集2总结
    ​前言    经过这几次JAVA练习题的训练,我对JAVA编程语言有了更深入的理解,同时在程序开发设计环节也有了很大的进步,吸收了上次编程练习的教训后,我在本阶段的编程练习中也有针对性的进行了改进。    本次的JAVA练习内容丰富,包括各种数据结构的应用,如哈希表,列表......
  • Java中的公平锁和非公平锁
    公平锁和非公平锁是多线程编程中对锁获取策略的两种不同实现,主要区别在于锁对等待线程的调度方式。公平锁公平锁(FairLock)遵循先来先服务的原则,线程按照请求锁的顺序依次获取锁。特点排队机制:线程请求锁时,如果锁被占用,会进入一个等待队列。当锁被释放时,队列中等待......
  • 【揭秘】JVM类加载器子系统:Java程序员的隐藏武器,你掌握了吗?
    Java虚拟机(JVM)的类加载器子系统是Java平台的核心组件之一,它负责在运行时动态地加载Java类。类加载器子系统通过将类的字节码转换为JVM可以执行的格式,使得Java程序能够实现高度的灵活性和可扩展性。下面将详细解释JVM类加载器子系统的工作原理、结构以及代码示例。打开免费领取......
  • 揭秘JVM性能优化:深入理解运行时数据区,让你的Java应用飞起来!
    Java虚拟机(JVM)的运行时数据区是程序执行期间管理和存储各种信息的关键部分。理解这些区域有助于深入掌握JVM的工作原理和性能优化。以下是对JVM运行时数据区的详细解析:打开免费领取面试资料https://fhos.urlint.cn/cHVLFV一、程序计数器(ProgramCounterRegister)定义:程序计......
  • 基于java和微信小程序实现投票评选系统项目【项目源码+论文说明】计算机毕业设计
    基于java和微信小程序实现投票评选系统演示【内附项目源码+LW说明】摘要越来越多信息化融入到我们生活当中的同时,也在改变着我们的生活和学习方式,当然,变化最明显的除了我们普通民众之外,要数高校学生的生活方式以及校园信息化的变革。智慧是改变生活和生产的一种来源,那么智......
  • Java基础知识(八)
    文章目录异常Exception和Error有什么区别?CheckedException和UncheckedException有什么区别?Throwable类常用方法有哪些?try-catch-finally如何使用?finally中的代码一定会执行吗?如何使用`try-with-resources`代替`try-catch-finally`?异常使用有哪些需要注意的......
  • Java基础知识(七)
    文章目录泛型什么是泛型?有什么作用?泛型的使用方式有哪几种?项目中哪里用到了泛型?反射何谓反射?反射的优缺点?反射的应用场景?注解何谓注解?注解的解析方法有哪几种?SPI何谓SPI?SPI和API有什么区别?SPI的优缺点?序列化和反序列化什么是序列化?什么是反序列化?如果有些字......