• 【Java】Java中对List进行排序


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

    使用Collections.sort()方法

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

    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]  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    使用Java 8的Stream API

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

    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]  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

    使用自定义比较器

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

    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]  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

  • 相关阅读:
    【MST】 CF1108 F
    CAS策略
    Tomcat 日志乱码问题解决
    二叉树相关问题细谈递归
    开发者,你对云计算可能有些误解
    声明周期1
    Git - 基于IDEA/命令撤销工作区和暂存区的修改
    【Redis面试】基础题总结(上)
    2.单链表练习
    JAVA中线程池的定义及使用
  • 原文地址:https://blog.csdn.net/qq_45471661/article/details/133178581