Java 按某个数字对列表进行排序?

Java 按某个数字对列表进行排序?,java,Java,我需要对数组列表进行排序,其中包括每个人的年龄,但我必须打印出65岁以上的人的列表。我知道如何在SQL中实现这一点,但不知道Java。任何帮助都将不胜感激。谢谢 首先确保你已经充分说明了问题,然后考虑你将首先使用的算法(这不是特定语言);然后实现算法 如果问题只是列出一个数组中年龄超过65岁的所有人(不是65岁或更大?),那么您只需要在数组中循环,并检查每一行的年龄是否符合标准。如果有,请打印出此人 如果需要对列表进行排序,请先进行排序。(如果列表较长,则使用气泡排序或更有效的排序);然后逐步浏

我需要对数组列表进行排序,其中包括每个人的年龄,但我必须打印出65岁以上的人的列表。我知道如何在SQL中实现这一点,但不知道Java。任何帮助都将不胜感激。谢谢

首先确保你已经充分说明了问题,然后考虑你将首先使用的算法(这不是特定语言);然后实现算法

如果问题只是列出一个数组中年龄超过65岁的所有人(不是65岁或更大?),那么您只需要在数组中循环,并检查每一行的年龄是否符合标准。如果有,请打印出此人


如果需要对列表进行排序,请先进行排序。(如果列表较长,则使用气泡排序或更有效的排序);然后逐步浏览列表,直到找到截止年龄并打印出所有剩余的。

我假设您(a)想按
年龄
值对
对象列表进行排序,然后(b)只打印年龄大于65岁的

在java中,进行排序的一种方法是使用
比较器
。Javadoc是。如果只打算使用一次,则可以将其实现为内联类;如果计划在多个地方使用,则可以将其实现为单独的类

ArrayList<Person> persons = new ArrayList<Person>();

Comparator<Person> example = new Comparator<Person>() {

    @Override
    public int compare(Person o1, Person o2) {
        return o1.getAge() - o2.getAge();
    }
};

Collections.sort(persons, example);
并添加
compareTo()
方法:

@Override
public int compareTo(Person o) {
    return this.getAge() - o.getAge();
}
但是,这只允许您按一个属性对类进行排序。使用
Comparator
,您可以定义多个属性,以便按不同的属性进行排序,例如名字、姓氏和年龄


要仅打印年龄大于65岁的
人,只需使用
if
条件循环列表内容,检查每个
人的年龄,仅在年龄大于65岁时打印。

这听起来不像排序-听起来像过滤。。。我建议您在Java中尝试一下(如果
,您可能会想使用
),然后编辑您的问题以包含代码,当然,除非您刚刚成功。。。在这种情况下,删除问题。是的筛选将是O(n)…而排序和筛选将是O(n logn)请尝试一下,然后向我们展示您的代码:)
persons.stream().filter(p->p.getAge()>65)
@NeplatnyUdaj:至少值得一提的是,该建议需要Java8。(如果OP对Java来说是新的,那么使用相对高级的选项,但版本还没有完全发布可能不是一个好主意。)
@Override
public int compareTo(Person o) {
    return this.getAge() - o.getAge();
}