от
    На этот вопрос уже есть ответ здесь:                           Сортировать ArrayList пользовательских объектов по свойству                                      25 ответов                                     У меня есть класс "Person", который содержит конструктор с 3 параметрами. Теперь мне нужна опция сортировки, она мне нужна для сортировки по идентификатору, имени или адресу по возрастанию и по убыванию
public class Person
{
private int id;
private String name;
private String addr;


public Person()
{
    id = MyTools.getInteger("ID: ");
    name = MyTools.getString("Name: ");
    addr = MyTools.getString("Address: ");

}
и вот где я хочу отсортировать это:
public static void main(String[] args) throws FileNotFoundException
{
    boolean loop = true;

    System.out.println("Choose:");
    System.out.println("\t"   "0 = Exit programm");
    System.out.println("\t"   "1 = Add new");
    System.out.println("\t"   "2 = Show");
    System.out.println("\t"   "3 = Sort");
    System.out.println("\t"   "4 = Delete");
    System.out.println("\t"   "5 = Save");
    System.out.println("\t"   "6 = Help");

    TextFile tf = new TextFile("AdressVerwaltung.txt", 'o');
    List adressen = new ArrayList();
    int listSize = 0;
    while (loop)
    {

int choice = MyTools.getInteger("Please choose which operation you want 
to execute (6 = Help): " "\n");

    switch (choice)
    {
        case 0:
        System.out.println("Programmende");         
        for (int k = 0; k < listSize; k  )
        {
            tf.printLine(adressen.get(k).toString());
        }
        tf.close();
        loop = false;
        break;

      case 1:


  Person p = new Person();
  adressen.add(p);
  System.out.println("Data is put in Array!");
  listSize = adressen.size();

break;
case 2:

break;
case 3: 
break;
Теперь я хочу иметь возможность выбрать, хочу ли я сортировать по идентификатору, по имени или по адресу              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Вы можете использовать интерфейс Comparator в Java для создания некоторых пользовательских компараторов: Например, объект User:
public class User {
    private final String username;
    private final Integer age;

    public User(String username, Integer age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public Integer getAge() {
        return age;
    }
 }
Пример компаратора, который сортирует по имени пользователя:
public class UsernameComparator implements Comparator
...