2016-01-30 3 views
-1

Я сделал много поиска в Интернете для создания алгоритма сортировки, но я могу найти алгоритмы только для сортировки 1 вещи. Я должен сортировать 2 вещи одновременно.Как создать алгоритм сортировки Java для возраста и имени в одно и то же время?

STDIN взгляд любит:

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

Я буду алгоритм сортировки, чтобы получить следующий вывод:

name, last name age 
name,last name age 
+0

Ваш вопрос остается неясным. Вероятно, ваше решение сводится к «Создание пользовательского класса для ваших данных и его реализация с помощью Comparable, которая будет выполнять заказы, необходимые вам при использовании Collections.sort()» – amit

+0

Либо создайте класс Person, который инкапсулирует все эти данные и реализовать его для сравнения или использовать собственный Компаратор. Вы можете начать с [этого учебника] (http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/). –

+0

«Я сделал большой поиск в Интернете для создания алгоритма сортировки»: я вам не верю. На этом сайте есть множество подобных вопросов. – Raedwald

ответ

2

Поскольку информация не достаточно ясно, что я буду отвечать, как правило, и вы можете применить это к вашей ситуации. Давайте предположим, что у вас есть класс Person:

public class Person implements Comparable<Person>{ 
//constructor 
String name; 
int age; 
public String getName() 
{ 
... 
} 
Public int getAge() 
{ 
... 
} 
} 

Для сравнения объектов, которые вы создали (и, следовательно, остается неясным, какие из параметров объекты должны быть сопоставлены с помощью), вам необходимо будет создать компаратор! Этот компаратор сортирует по возрасту сначала, затем по названию. Вы можете, конечно, изменить это на свои нужды (или даже добавить больше переменных для сортировки).

статический класс PersonComparator реализует компаратор

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 Информация here collection.sort Информация here - Это будет делать тяжелую работу за вас, пока вы даете ему инструмент для сравнения по

Смежные вопросы