You need to enable JavaScript to run this app. Java调用Arrays.sort排序ArrayList<Person>提示无适配方法如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Java调用Arrays.sort排序ArrayList<Person>提示无适配方法如何解决

错误原因

你调用了错误的排序API:

  • Arrays.sort() 仅支持数组类型的入参,你传入的persons是ArrayList集合类型,触发了方法参数不匹配的报错。

修复方案

替换适配集合的排序方法

你可以选任意一种符合你JDK版本的写法:

  1. 通用写法(兼容所有JDK版本),使用Collections.sort()处理集合:
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Person> persons = new ArrayList<>();
        persons.add(new Person("Guillaume", 20));
        persons.add(new Person("John", 50));
        persons.add(new Person("Guillaume", 10));
        persons.add(new Person("John", 10));
        persons.add(new Person("Luc", 5));
        System.out.println(persons.get(0).age);
        // 替换排序方法,同时实现你要的排序规则
        Collections.sort(persons, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                // 先按姓名字典序排序
                int nameCompare = o1.name.compareTo(o2.name);
                // 姓名相同则按年龄升序排序
                if (nameCompare != 0) {
                    return nameCompare;
                }
                return o1.age - o2.age;
            }
        });
        System.out.println(persons);
    }
}
class Person {
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return name + " " + age;
    }
}
  1. JDK 8+简化写法,直接调用List自带的sort方法:
// 匿名内部类写法
persons.sort(new Comparator<Person>() {
    @Override
    public int compare(Person o1, Person o2) {
        int nameCompare = o1.name.compareTo(o2.name);
        return nameCompare != 0 ? nameCompare : o1.age - o2.age;
    }
});

// 还可以进一步简化为lambda写法
persons.sort((o1, o2) -> {
    int nameCompare = o1.name.compareTo(o2.name);
    return nameCompare != 0 ? nameCompare : o1.age - o2.age;
});

运行结果

修改后输出将完全符合你的排序需求:

20
[Guillaume 10, Guillaume 20, John 10, John 50, Luc 5]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:39:03