This question already has answers here:
sorting integers in order lowest to highest java
(7个答案)
3年前关闭。
例如,我会说我在ArrayList中有10个字符串,每个字符串代表一个人的姓名和年龄:
我们称这个ArrayList为“ people”
它们都在我的ArrayList中。我可以通过使用来确定年龄
但是我想对ArrayList进行排序,以打印出年龄从高到低的人。我想知道是否有任何方法可以做到这一点。如果有的话,还有更有效的方法吗?
然后在您的代码中使用
然后只需对列表进行如下排序:
(7个答案)
3年前关闭。
例如,我会说我在ArrayList中有10个字符串,每个字符串代表一个人的姓名和年龄:
David:43
John:10
Wilson:23
George:59
Pat:3
Tom:52
Sydney:32
Mohammed:72
Jay:34
Adam:18
我们称这个ArrayList为“ people”
它们都在我的ArrayList中。我可以通过使用来确定年龄
Integer.parseInt(people.get(index).split(":")[1]);
但是我想对ArrayList进行排序,以打印出年龄从高到低的人。我想知道是否有任何方法可以做到这一点。如果有的话,还有更有效的方法吗?
最佳答案
有一个更加有效,清晰和可扩展的选项。使用对象。 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);
关于java - 按从最高到最低的每个字符串解析的整数对ArrayList <String>进行排序? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39376431/