Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序数组列表<;字符串>;由从最高值的每个字符串中解析的整数->;最低的?_Java_Sorting_Arraylist - Fatal编程技术网

Java 排序数组列表<;字符串>;由从最高值的每个字符串中解析的整数->;最低的?

Java 排序数组列表<;字符串>;由从最高值的每个字符串中解析的整数->;最低的?,java,sorting,arraylist,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“people” 它们都在我的ArrayList中。我可以通过使用 Integer.parseInt(people.get(index).split(":")[1]); 但我想对ArrayList进行排序,以打

例如,我会说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);
  }
}

有一个更高效、更清晰、更可扩展的选项。使用对象。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);
  }
}

Collections.sort()
与执行年龄分析的
比较器一起使用。将
Collections.sort()
与执行年龄分析的
比较器一起使用。感谢您的快速回复!看起来正是我要找的!我会试试看,谢谢@David很乐意帮助Hey@nhouser9,它非常有效,只有一个问题。它从最低到最高打印。有没有办法改变这一点?编辑:我设法解决了这个问题,这里有一个简单的解决方案,适用于任何遇到这个问题的人:Collections.sort(people,Collections.reverseOrder())@David是的,您可以简单地将
compare更改为带有任何自定义逻辑的
方法。要从最高到最低,请更改减法的顺序。您甚至可以使用
返回name.compareTo(other.name)
按名称排序。与元素顺序相关的所有内容都可以通过比较这些元素的方式来控制。感谢您的快速回复!看起来正是我要找的!我会试试看,谢谢@David很乐意帮助Hey@nhouser9,它非常有效,只有一个问题。它从最低到最高打印。有没有办法改变这一点?编辑:我设法解决了这个问题,这里有一个简单的解决方案,适用于任何遇到这个问题的人:Collections.sort(people,Collections.reverseOrder())@David是的,您可以简单地将
compare更改为带有任何自定义逻辑的
方法。要从最高到最低,请更改减法的顺序。您甚至可以使用
返回name.compareTo(other.name)
按名称排序。与元素顺序相关的一切都可以通过比较这些元素的方式来控制。