如何同时为年龄和名称制作排序算法Java?

时间:2016-01-30 17:15:37

标签: java algorithm sorting

我已经在互联网上进行了大量搜索以制作排序算法,但我只能找到排序1的算法。我必须同时对两件事情进行排序。

stdIN看起来像:

name, last name
birth year
dead year
name,last name
birth year
dead year

我将使用排序算法来获得以下输出:

name, last name age
name,last name age

1 个答案:

答案 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);

}

列出的人员将按年龄先按名称订购。

  • 排序方法在内部使用ASCII值对元素进行排序,因此您需要确保名称以大写字母开头。

整数/字符串compareTo info here collection.sort info here - 只要你给它提供比较工具,这将为你付出艰苦的努力