2015-01-18 6 views
0

Я начал программировать недавно, так что это может быть легко. У меня сложная задача. У меня есть объект с именем, датой рождения и номером телефона. Подобно объекту [0] [0] = «Джон» Объект [0] [1] = «10/10/2010» Объект [0] [0] = «900000000» с несколькими другими лицами. Поэтому мне сложно сортировать по имени и сохранять дату рождения и номер телефона вместе с именем. Спасибо.Сортировка по имени Объект [] [] Java

ответ

2

Логической задачей было бы создать класс Person, который содержит имя, дату рождения и номер телефона. Затем вместо использования массива 2D Object, который не является безопасным по типу, используйте массив 1D - Person[].

Если ваш класс Person реализует Comparable<Person> (с логикой сравнения, которая сравнивает имена), Arrays.sort() сортирует массив по вашему имени.

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); 
    } 
} 
Смежные вопросы