当前位置:首页 > Java

java 如何排序

2026-03-19 21:24:59Java

排序方法概述

Java提供了多种排序方式,适用于不同场景和数据类型。常见方法包括使用内置工具类、自定义排序规则以及实现特定算法。

使用Arrays.sort()排序数组

对于基本类型数组和对象数组,java.util.Arrays类提供了静态方法sort()。基本类型数组按数值升序排列,对象数组默认按自然顺序排序(需实现Comparable接口)。

int[] intArray = {5, 2, 9, 1, 5};
Arrays.sort(intArray); // 排序后: [1, 2, 5, 5, 9]

String[] strArray = {"Banana", "Apple", "Orange"};
Arrays.sort(strArray); // 排序后: ["Apple", "Banana", "Orange"]

使用Collections.sort()排序列表

List集合排序可使用java.util.Collections.sort()方法。默认按自然顺序排序,或通过Comparator自定义规则。

List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5);
Collections.sort(numbers); // 排序后: [1, 1, 3, 4, 5]

List<String> words = Arrays.asList("cat", "dog", "bird");
Collections.sort(words, (a, b) -> a.length() - b.length()); // 按字符串长度排序

自定义Comparator实现复杂排序

通过实现Comparator接口,可定义灵活的比较逻辑。例如对对象按多字段排序:

class Person {
    String name;
    int age;
    // 构造方法和getter省略
}

List<Person> people = Arrays.asList(
    new Person("Alice", 30),
    new Person("Bob", 25)
);

Collections.sort(people, Comparator
    .comparing(Person::getAge)
    .thenComparing(Person::getName));

使用Stream API排序

Java 8+的Stream API支持链式操作和函数式排序:

List<String> fruits = Arrays.asList("Pear", "Apple", "Melon");
List<String> sortedFruits = fruits.stream()
    .sorted() // 自然排序
    .collect(Collectors.toList());

List<Integer> nums = Arrays.asList(3, 1, 4);
List<Integer> descNums = nums.stream()
    .sorted(Comparator.reverseOrder()) // 降序排序
    .collect(Collectors.toList());

实现自定义排序算法

如需特定算法(如快速排序、归并排序),可手动实现:

java   如何排序

void quickSort(int[] arr, int low, int high) {
    if (low < high) {
        int pivot = partition(arr, low, high);
        quickSort(arr, low, pivot - 1);
        quickSort(arr, pivot + 1, high);
    }
}

int partition(int[] arr, int low, int high) {
    int pivot = arr[high];
    int i = low - 1;
    for (int j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(arr, i, j);
        }
    }
    swap(arr, i + 1, high);
    return i + 1;
}

标签: java
分享给朋友:

相关文章

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…

如何精通java

如何精通java

理解Java核心概念 Java的基础知识包括数据类型、变量、运算符、控制流语句(如循环和条件判断)、数组以及面向对象编程(OOP)的核心概念(类、对象、继承、多态、封装)。熟练掌握这些内容是后续学习的…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…

java js实现转盘抽奖

java js实现转盘抽奖

实现转盘抽奖的步骤 HTML结构 创建转盘抽奖的基本HTML结构,包括转盘区域和抽奖按钮。 <div id="wheel"> <canvas id="wheelCanvas"&…

java实现js

java实现js

Java 实现 JavaScript 功能 在 Java 中实现 JavaScript 功能通常涉及以下几种方法: 使用 ScriptEngine Java 提供了 javax.script 包,可…