Какая логика сортировки главного объекта по полю вложенного объекта?
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в порядке возрастания\убывания.
Как это реализовать, не понимаю?