我需要对包含每个人年龄的数组列表进行排序,但是我必须打印出超过65岁的人员列表。我知道如何在SQL中执行此操作,而不是Java。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
首先确保您已完全说明问题,然后考虑您将首先使用的算法(这不是语言特定的);然后实现算法。
如果问题仅仅是列出年龄超过65岁(不是65岁或更大?)的阵列中的所有人,那么您只需要遍历阵列,并且对于每一行,检查年龄是否满足标准。如果是,请打印出来。
如果您需要对列表进行排序,请先执行此操作。 (如果列表很长,则使用冒泡排序或更有效的排序);然后逐步查看清单,直到找到截止年龄并打印出所有剩余时间。
答案 1 :(得分:0)
我将假设您(a)想要按Person
值{em}分配age
对象列表,然后(b)仅打印出来那些年龄大于65岁的Person
。
在java中,进行排序的一种方法是使用Comparator
。 Javadoc是here。如果您只打算使用一次,则可以将其实现为内联类;如果计划在多个位置使用它,则可以将其实现为单独的类。
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);
此实现将按年龄排序。您可以通过切换o1
和o2
来切换升序和降序。
另一种可能更简单的方法是在Person类中实现Comparable
。
为了使您的Person
类具有可比性,请修改其声明:
public class Person implements Comparable<Person> {
并添加compareTo()
方法:
@Override
public int compareTo(Person o) {
return this.getAge() - o.getAge();
}
但是,这只允许您按一个属性对类进行排序。使用Comparator
,您可以定义多个属性,以便根据不同的属性进行排序,例如名字,姓氏和年龄。
要仅打印年龄大于65岁的Person
,只需循环查看列表内容,并if
条件检查每个Person
的年龄,并仅在年龄时打印&GT; 65。