【Java】Java中对List进行排序

探讨几种Java对List进行排序的方法。

使用Collections.sort()方法

Java中的Collections.sort()方法是对List进行排序的最常用方法。它使用TimSort算法(是一种稳定的,基于合并的排序算法,是插入排序和归并排序的混合体),具有O(n log n)的时间复杂度。

java 复制代码
import java.util.*;  
  
public class Main {  
    public static void main(String[] args) {  
        List<Integer> numbers = new ArrayList<>();  
        numbers.add(5);  
        numbers.add(9);  
        numbers.add(1);  
        numbers.add(3);  
  
        Collections.sort(numbers);  
  
        System.out.println(numbers);  // 输出:[1, 3, 5, 9]  
    }  
}

使用Java 8的Stream API

Java 8引入了Stream API,它提供了一种新的方式来处理集合。你可以使用Stream API对List进行排序。

java 复制代码
import java.util.*;  
import java.util.stream.Collectors;  
  
public class Main {  
    public static void main(String[] args) {  
        List<Integer> numbers = new ArrayList<>();  
        numbers.add(5);  
        numbers.add(9);  
        numbers.add(1);  
        numbers.add(3);  
  
        List<Integer> sortedNumbers = numbers.stream()  
            .sorted()  
            .collect(Collectors.toList());  
  
        System.out.println(sortedNumbers);  // 输出:[1, 3, 5, 9]  
    }  
}

在这个例子中,我们首先把List转换为Stream,然后使用sorted()方法对元素进行排序,最后我们收集结果并创建一个新的有序的List。

使用自定义比较器

如果你需要对自定义对象进行排序,或者需要使用特定的排序标准,你可以使用自定义比较器。比较器需要实现Comparator接口,并覆盖compare()方法。

java 复制代码
import java.util.*;  
  
public class Main {  
    public static void main(String[] args) {  
        List<String> words = new ArrayList<>();  
        words.add("banana");  
        words.add("apple");  
        words.add("cherry");  
        words.add("date");  
  
        Collections.sort(words, new Comparator<String>() {  
            @Override  
            public int compare(String word1, String word2) {  
                return word1.length() - word2.length();  
            }  
        });  
  
        System.out.println(words);  // 输出:[date, apple, cherry, banana]  
    }  
}

在这个例子中,我们使用了一个自定义比较器,它将字符串按照长度进行排序。如果第一个字符串的长度小于第二个字符串的长度,compare()方法将返回一个负数;如果长度相等,它将返回0;如果第一个字符串的长度大于第二个字符串的长度,它将返回一个正数。这样,Collections.sort()方法就会按照我们指定的方式进行排序。

相关推荐
xqqxqxxq3 小时前
Java AI智能P图工具技术笔记
java·人工智能·笔记
谷雨不太卷4 小时前
进程的状态码
java·前端·算法
jieyucx4 小时前
Go语言深度解剖:Map扩容机制全解析(增量扩容+等量扩容+渐进式迁移)
开发语言·后端·golang·map·扩容策略
顾温4 小时前
default——C#/C++
java·c++·c#
空中海4 小时前
02 ArkTS 语言与工程规范
java·前端·spring
楚国的小隐士4 小时前
在AI时代,如何从0接手一个项目?
java·ai·大模型·编程·ai编程·自闭症·自闭症谱系障碍·神经多样性
脏脏a4 小时前
【C++模版】泛型编程:代码复用的终极利器
开发语言·c++·c++模版
island13144 小时前
【C++仿Muduo库#3】Server 服务器模块实现上
服务器·开发语言·c++
散峰而望4 小时前
【算法竞赛】C/C++ 的输入输出你真的玩会了吗?
c语言·开发语言·数据结构·c++·算法·github
小龙报4 小时前
【C语言】内存里的 “数字变形记”:整数三码、大小端与浮点数存储真相
c语言·开发语言·c++·创业创新·学习方法·visual studio