You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Java中ArrayList存储的对象进行升序或降序排序?

Java ArrayList数字排序实现方法

前置优化

你当前代码使用的是无泛型的原始类型ArrayList,建议先指定泛型为Integer,避免排序过程中出现类型转换异常:

// 把原来的 ArrayList al = new ArrayList(); 替换为
ArrayList<Integer> al = new ArrayList<>();
// 接收输入的代码也对应修改为:
Integer ob = sc.nextInt();
al.add(ob);

升序排序实现

导入java.util.Collections包后,直接调用排序方法即可:

// 升序排序(会直接修改原ArrayList的顺序)
Collections.sort(al);
System.out.println("升序结果:" + al);

如果不想修改原列表的顺序,可使用Stream API生成新的排序后列表(JDK 8及以上支持):

import java.util.List;
// ...
List<Integer> sortedAscList = al.stream().sorted().toList();
System.out.println("升序结果(原列表不变):" + sortedAscList);

降序排序实现

导入java.util.Collections和java.util.Comparator任意一个即可,两种实现方式:

// 方式1:使用Collections的反转比较器,修改原列表
Collections.sort(al, Collections.reverseOrder());
System.out.println("降序结果:" + al);

// 方式2:使用Comparator的反转比较器,修改原列表
al.sort(Comparator.reverseOrder());

// 不修改原列表的实现
List<Integer> sortedDescList = al.stream().sorted(Comparator.reverseOrder()).toList();

完整修改后代码示例

package com.mypackage;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    ArrayList<Integer> al = new ArrayList<>();

    System.out.println("Enter ten numbers");
    for (int i = 1; i <= 10; i++) {
      Integer ob = sc.nextInt();
      al.add(ob);
    }
    System.out.println("原列表:" + al);

    // 升序排序
    Collections.sort(al);
    System.out.println("升序结果:" + al);

    // 降序排序
    Collections.sort(al, Collections.reverseOrder());
    System.out.println("降序结果:" + al);
    
    sc.close();
  }
}

输入测试用例6、0、3、1、8、10、9、2、7、5后,输出结果为:

原列表:[6, 0, 3, 1, 8, 10, 9, 2, 7, 5]
升序结果:[0, 1, 2, 3, 5, 6, 7, 8, 9, 10]
降序结果:[10, 9, 8, 7, 6, 5, 3, 2, 1, 0]

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:54:04