例如,我会说我在ArrayList中有10个字符串,每个字符串代表一个人的姓名和年龄:
David:43
John:10
Wilson:23
George:59
Pat:3
Tom:52
Sydney:32
Mohammed:72
Jay:34
Adam:18
我们称这个ArrayList为“人”
它们都在我的ArrayList中。我可以通过
来获得年龄Integer.parseInt(people.get(index).split(":")[1]);
但是我想对ArrayList进行排序以打印出从最高到最低年龄的人。我想知道是否有办法做到这一点。如果有,有更有效的方法吗?
答案 0 :(得分:4)
有一个更有效,易读和可扩展的选项。使用对象。 Java是一种OO语言,Person
对象存储name
和age
并实现Comparable
以允许对象之间的比较完美地解决您的问题。使用CompareTo
方法定义对象的比较方式。例如:
public class Person implements Comparable<Person> {
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String name;
public int age;
@Override
public int compareTo(Person other){
return (age - other.age);
}
}
然后在您的代码中,而不是让ArrayList<String>
使用ArrayList<Person>
。而不是将"David:43"
添加new Person("David", 43)
添加到您的列表中。
然后简单地对列表进行排序:
Collections.sort(yourlist);