我已经在互联网上进行了大量搜索以制作排序算法,但我只能找到排序1的算法。我必须同时对两件事情进行排序。
stdIN看起来像:
name, last name
birth year
dead year
name,last name
birth year
dead year
我将使用排序算法来获得以下输出:
name, last name age
name,last name age
答案 0 :(得分:2)
由于信息不够清晰,我会回答一般情况,你可以将它应用到你的情况中。 让我们假设你有一个人类:
public class Person implements Comparable<Person>{
//constructor
String name;
int age;
public String getName()
{
...
}
Public int getAge()
{
...
}
}
为了比较您创建的对象(因此不清楚对象应该与哪些参数进行比较),您需要创建一个比较器! 该比较器将按年龄排序,然后按名称排序。您当然可以根据需要改变它(甚至可以添加更多变量来排序)。
static class PersonComparator implements Comparator<Person>
public int compare(Person p1, Person p2) {
int ans;
Integer age1 = p1.getAge();
Integer age2 = p2.getAge();
ans = age1.compareTo(age2);
if(ans!=0) //0 means they're equal
return ans;
else
{
String name1; = p1.getName();
String name2; = p2.getName();
return name1.CompareTo(name2);
}
你的排序功能类似于:
public void order(List<Person> persons)
{
PersonComparator pc = new PersonComparator()
Collections.sort(persons,pc);
}
列出的人员将按年龄先按名称订购。
整数/字符串compareTo info here collection.sort info here - 只要你给它提供比较工具,这将为你付出艰苦的努力