Сортировка набора объектов в Java с сопоставимым интерфейсом

Можно отсортировать набор объектов с сопоставимым интерфейсом, и когда вы найдете какой-то атрибут с равным значением приращения?

Мне нужно сохранить коллекцию, упорядоченную по числовому атрибуту, идентифицировать атрибуты и увеличить равное значение без потери порядка


person Thiago Valentim    schedule 01.11.2013    source источник
comment
Вы пробовали что-то?   -  person Christian    schedule 01.11.2013
comment
Затем вам нужно написать компаратор.   -  person    schedule 01.11.2013
comment
Части этого вопроса неясны. Вы спрашиваете, может ли изменение элементов в коллекции нарушить порядок коллекции? Конечно, если изменения происходят в полях, которые компаратор использует для создания заказа.   -  person Surveon    schedule 02.11.2013


Ответы (1)


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

class Student implements Comparable < Student >
{
  int rollno;
  String name;
  int age;
  Student (int rollno, String name, int age)
  {
    this.rollno = rollno;
    this.name = name;
    this.age = age;
  }

  public int compareTo (Student st)
  {
    if (age == st.age)
      {
        st.age += 1;
        return -1;
      }

    else if (age > st.age)
      return 1;
    else
      return -1;
  }
}

Когда вы запускаете этот код со следующим, вы получаете желаемый результат:

Выполнение кода:

public static void main (String[]args)
  {
    ArrayList < Student > al = new ArrayList < Student > ();
    al.add (new Student (101, "Vijay", 23));
    al.add (new Student (106, "Ajay", 23));
    al.add (new Student (105, "Jai", 21));

    Collections.sort (al);
    for (Student st:al)
      {
        System.out.println (st.rollno + " " + st.name + " " + st.age);
      }
  }

Вывод:

105 Jai 21
106 Ajay 23
101 Vijay 24
person Amar Wadhwani    schedule 17.01.2020