Как сортировать классы по вложенным полям (композиция)

Имеем такую структуру программы:

  • Класс 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?


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