通过从Highest中的每个String解析的整数对ArrayList <string>进行排序 - &gt;最低?

时间:2016-09-07 17:55:38

标签: java sorting arraylist

例如,我会说我在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进行排序以打印出从最高到最低年龄的人。我想知道是否有办法做到这一点。如果有,有更有效的方法吗?

1 个答案:

答案 0 :(得分:4)

有一个更有效,易读和可扩展的选项。使用对象。 Java是一种OO语言,Person对象存储nameage并实现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);