按名称Object [] [] Java排序

时间:2015-01-18 08:51:29

标签: java sorting object

我最近开始编程,所以这可能很容易。我的目标很困难。我有一个名字,出生日期和电话号码的对象。像对象[0] [0] =“John”对象[0] [1] =“10/10/2010”对象[0] [0] =“900000000”与其他几个人一样。所以我很难按姓名排序并保留出生日期和电话号码以及姓名。 谢谢。

2 个答案:

答案 0 :(得分:2)

要做的合乎逻辑的事情是创建一个包含姓名,出生日期和电话号码的Person课程。然后,使用一维数组 - Person[],而不是使用非类型安全的2D对象数组。

如果您的Person类将实现Comparable<Person>(使用比较名称的比较逻辑),Arrays.sort()将按名称为您排序数组。

答案 1 :(得分:0)

这是我的标准排序示例,碰巧使用Person对象:

/*
**  Use the Collections API to sort a List for you.
**
**  When your class has a "natural" sort order you can implement
**  the Comparable interface.
**
**  You can use an alternate sort order when you implement
**  a Comparator for your class.
*/
import java.util.*;

public class Person implements Comparable<Person>
{
    String name;
    int age;

    public Person(String name, int age)
    {
        this.name = name;
        this.age = age;
    }

    public String getName()
    {
        return name;
    }

    public int getAge()
    {
        return age;
    }

    public String toString()
    {
        return name + " : " + age;
    }

    /*
    **  Implement the natural order for this class
    */
    public int compareTo(Person p)
    {
        return getName().compareTo(p.getName());
    }

    static class AgeComparator implements Comparator<Person>
    {
        public int compare(Person p1, Person p2)
        {
            return p1.getAge() - p2.getAge();
        }
    }

    public static void main(String[] args)
    {
        List<Person> people = new ArrayList<Person>();
        people.add( new Person("Homer", 38) );
        people.add( new Person("Marge", 35) );
        people.add( new Person("Bart", 15) );
        people.add( new Person("Lisa", 13) );

        // Sort by natural order

        Collections.sort(people);
        System.out.println("Sort by Natural order");
        System.out.println("\t" + people);

        // Sort by reverse natural order

        Collections.sort(people, Collections.reverseOrder());
        System.out.println("Sort by reverse natural order");
        System.out.println("\t" + people);

        //  Use a Comparator to sort by age

        Collections.sort(people, new Person.AgeComparator());
        System.out.println("Sort using Age Comparator");
        System.out.println("\t" + people);

        //  Use a Comparator to sort by descending age

        Collections.sort(people, Collections.reverseOrder(new Person.AgeComparator()));
        System.out.println("Sort using Reverse Age Comparator");
        System.out.println("\t" + people);
    }
}