【发布时间】:2018-09-18 07:17:23
【问题描述】:
我编写了一个程序,使用排序首先按条目的姓氏对数组列表进行排序,然后按年龄排序,从而创建 2 个列表作为输出。问题是姓氏排序似乎效果很好,但年龄排序总是将姓名与姓氏排序的顺序相同。 到目前为止,这是我的代码,我有 2 个类。
package myperson;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Queue implements Comparable<Queue> {
public Person Data;
public int iter=0;
public Queue(String first, String last,int age)
{
Data = new Person(first, last, age);
}
@Override
public int compareTo(Queue other)
{
if(iter==0){
iter++;
return Data.Last.compareTo(other.Data.Last);
}
else
return Double.compare(Data.Age, other.Data.Age);
}
@Override
public String toString() {
return Data.First + " " + Data.Last;
}
public static void main(String[] args) throws java.io.IOException {
ArrayList list = new ArrayList();
String first;
String last;
int age = 0;
Scanner sc=new Scanner(System.in);
list.add(new Queue("John", "Huber", 22));
list.add(new Queue("Chelsea", "Davis", 32));
list.add(new Queue("Susan", "Taylor", 46));
list.add(new Queue("Scott", "Zedburg", 59));
System.out.println("Ordered by Last Name");
Collections.sort(list);
for (int i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));
}
System.out.println("\nSort by Age");
Collections.sort(list);
for (int i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));
}
}
}
人物类:
package myperson;
public class Person {
public String First;
public String Last;
public double Age;
public Person(String first, String last,double age)
{
First = first;
Last = last;
Age = age;
}
}
输出:
运行:
Ordered by Last Name
切尔西戴维斯
约翰·休伯
苏珊·泰勒
斯科特·泽德堡
Sort by Age
切尔西戴维斯
约翰·休伯
苏珊·泰勒
斯科特·泽德堡
构建成功(总时间:0 秒)
【问题讨论】:
-
首先,变量名不应以大写字符开头。遵循 Java 约定。要使用不同的 Comparator 进行排序,请查看:: stackoverflow.com/questions/28008497/sort-by-name-object-java/…
-
请使用正确的缩进。否则你的代码很难阅读。
-
所谓的“重复”答案不能回答这个问题。那是关于在同一操作中按多个标准进行排序。这是关于按不同标准多次排序。
标签: java arrays sorting arraylist collections