Как сортировать классы по вложенным полям (композиция)
Имеем такую структуру программы:
- Класс
Account:
public class Account {
{
id_auto_generate++;
}
private static int id_auto_generate;
private int id = id_auto_generate;
private int balance = 0; // баланс счета
private boolean blocked = false; // статус блокировки аккаунта (false - рабочий, true - заблокирован)
// тут set и get-методы
}
- Класс
Client, у которого внутриArrayListтипаAccount:
public class Client extends Actions {
private String name = ""; // имя клиента
private ArrayList<Account> accounts = new ArrayList<>();
// тут set и get-методы
}
- И самый главный класс
Bank, у которого внутриArrayListтипаClient:
public class Bank extends Actions{
private String name = ""; // название Банка
private ArrayList<Client> clients = new ArrayList<>();
private ArrayList<Client> sorted;
private List<Integer> dataListInteger;
private List<String> dataListString;
// тут разные методы
}
Общая логика какая?
Имеется один банк. В банке может быть множество клиентов. У одного клиента может быть множество счетов. На счету в банке могут быть и положительные балансы и отрицательные.
Задача:
Вывести на печать отсортированные в классе Bank список ArrayList типа Client, например, по возрастанию балансов. Я понимаю, что отсортировать сам ArrayList вообще задача не решаемая.
Что я пробовал:
Я могу отсортировать в классе Bank список ArrayList типа Client по имени клиента (по полю name) так:
public void ascendingName(){
sorted = new ArrayList<>(clients);
sorted.sort(Comparator.comparing(Client::getName));
System.out.println(sorted);
}
Но как отсортировать "вложенные" поля, находящиеся в "последнем" ArrayList'е по полю int balance?