关于Java中的客户比较器

关于Java中的客户比较器,java,sorting,Java,Sorting,我有一个自定义的a类: class A { String name; String address; String age; } 而ArrayList包含类A的对象。函数sortOnTheBasisOf()将从用户处获取关于是否应根据名称、地址或年龄进行排序的输入 现在,我知道为了排序,我需要实现比较器;然而,由于排序可能需要根据姓名、地址或年龄进行,我如何实现比较器,使其在所有人身上都能工作 谢谢。您需要三个不同的比较器,您可以使用比较器。比较以轻松创建它们,如果您的

我有一个自定义的
a类

class A {
    String name;
    String address;
    String age;
}
ArrayList
包含类
A
的对象。函数
sortOnTheBasisOf()
将从用户处获取关于是否应根据
名称
地址
年龄
进行排序的输入

现在,我知道为了排序,我需要实现
比较器
;然而,由于排序可能需要根据姓名、地址或年龄进行,我如何实现
比较器
,使其在所有人身上都能工作


谢谢。

您需要三个不同的比较器,您可以使用
比较器。比较
以轻松创建它们,如果您的类有getter,它们将是:

Comparator.comparing(A::getName);
Comparator.comparing(A::getAddress);
Comparator.comparing(A::getAge);

根据输入,在
Sorton the basisof()
中使用相应的变量。

因此,如果我有20个不同的成员变量,我需要20个不同的比较器吗?有没有更好的方法来做到这一点(考虑到所有比较都是以标准方式进行的——字母顺序、数字顺序等)?@J.Doe以什么方式更好?你需要根据它将被排序的字段进行选择,你必须以一种方式或另一种方式进行排序。更好的是,它将以通常的方式进行排序(就好像它们是普通字符串、整数等。)@J.Doe它将以通常的方式进行排序,您仍然需要选择用于排序的字段。您的意思是说是否可以创建一个适用于名称、地址和年龄的比较器?