Какая логика сортировки главного объекта по полю вложенного объекта?

P.S. Это не учебное задание, код упрощен с целью оставить лишь смысл необходимой задачи для реализации.

Имеются классы InsertedOne и InsertedTwo с одинаковой структурой внутри:

1) класс InsertedOne:

class InsertedOne {
    int value;

    InsertedOne(){
        // рандомное заполнение value
    }
}

1) класс InsertedTwo:

class InsertedTwo {
    int value;

    InsertedTwo(){
        // рандомное заполнение value
    }
}

Далее есть класс MainClass, которые содержит внутри массив объектов типа InsertedOne и InsertedTwo:

class MainClass {
    public int value;
    public InsertedOne[] iOne = new InsertedOne[5]; // внутри заполнение происходит
    public InsertedTwo[] iTwo = new InsertedTwo[7]; // внутри заполнение происходит
}

В ходе работы программы создается массив объектов типа MainClass на 10 элементов и заполняется поле value:

MainClass[] mc = new MainClass[10];

Задача №1


  • Задача: отсортировать массив mc по полю value класса MainClass в порядке возрастания\убывания.
  • План действий:

1) Реализовать интерфейс Comparable<тип_нужного_объекта> в классе, в котором нужно выполнить сортировку, в данном случае - в классе MainClass;

2) И переопределить метод compareTo() в это классе.

  • Решение:
class MainClass implements Comparable<MainClass> {
    public int value;
    public InsertedOne[] iOne;
    public InsertedTwo[] iTwo;

    @Override
    public int compareTo(MainClass obj) {
        return Integer.compare(value, obj.value);
    }
}
  • Выполнение сортировки:
Arrays.sort(mc); // сортировать в порядке возрастания
Arrays.sort(mc, Collections.reverseOrder()); // сортировать в порядке убывания

Задача №2


  • Задача: отсортировать массив mc по полю value класса InsertedOne в порядке возрастания\убывания.

Как это реализовать, не понимаю?


Ответы (0 шт):