按一定数量排序列表?

我需要对包含每个人年龄的数组列表进行排序,但我必须打印出超过65岁的人员列表。我知道如何在SQL中执行此操作,而不是Java。 任何帮助,将不胜感激。 谢谢!

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

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

如果您需要对列表进行排序,请先执行此操作。 (如果列表很长,则使用冒泡排序或更有效的排序); 然后逐步查看列表,直到找到截止年龄并打印出所有其余部分。

我将假设您(a)想要按其age值对Person对象列表进行排序, 然后 (b)仅打印年龄大于65的Person

在java中,进行排序的一种方法是使用Comparator 。 Javadoc就在这里 。 如果您只打算使用一次,可以将其实现为内联类,如果计划在多个位置使用它,则可以将其实现为单独的类。

 ArrayList persons = new ArrayList(); Comparator example = new Comparator() { @Override public int compare(Person o1, Person o2) { return o1.getAge() - o2.getAge(); } }; Collections.sort(persons, example); 

此实现将按年龄排序。 您可以通过切换o1o2在升序和降序之间切换。

另一种可能更简单的方法是在Person类中实现Comparable 。 要使您的Person类可比,请修改其声明:

 public class Person implements Comparable { 

并添加compareTo()方法:

 @Override public int compareTo(Person o) { return this.getAge() - o.getAge(); } 

但是,这只允许您按一个属性对类进行排序。 使用Comparator ,您可以定义多个,以便按不同的属性排序,例如名字,姓氏和年龄。

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