Проблема с итерацией листа в разных классах на Java

Всем привет! Подскажите, пожалуйста, в чем может быть проблема? Есть класс UserService и в нём есть метод getAllUsers, который проводит итерацию по листу:

public class UserServiceImpl implements UserService{

    private final LinkedList<User> users;
    private final List<Training> trainings;
    //private AdminConsoleOut adminConsoleOut = new AdminConsoleOut();

    public UserServiceImpl() {
        this.users = new LinkedList<>();
        this.trainings = new ArrayList<>();
    }

    public void registerAdmin(String login, String password, String name, int age) {
        long id = 1;
        User adminUser = new User(id, login, password, UserRole.ADMIN, name, age);
        users.add(adminUser);
    }

    @Override
    public void registerUser(String login, String password, String name, int age) {
        long id;

        if(!users.isEmpty())
            id = users.getLast().getId() + 1;
        else id = 1;

        User newUser = new User(id, login, password, UserRole.USER, name, age);

        users.add(newUser);
    }

    @Override
    public User login(String login, String password) {        
        ConsoleOut consoleOut = new ConsoleOut();

        for (User user : users) {
            if (user.getLogin().equals(login) && user.getPassword().equals(password)) {
                System.out.println("Login Success");
                if (user.getRole().toString().equals("ADMIN")) {
                    consoleOut.adminMenu();
                } else if(user.getRole().toString().equals("USER")) {
                    consoleOut.userMenu();
                } else {
                    return user;
                }
            } // login failed
        } // end for
        
        return null;
    }

    public void getAllUsers() {
        System.out.println("Метод работает");

        for (User user : users) {
            if (user.getRole().toString().equals("ADMIN")) {
                this.users.forEach(System.out::println);
            } else {
                System.out.println("У вас недостаточно прав.");
            }  
        }
    }
}

Далее есть класс в другом пакете:

public class ConsoleUI {
    private static final Scanner input = new Scanner(System.in);
    private AdminServiceImpl adminService = new AdminServiceImpl();
    private UserServiceImpl userService = new UserServiceImpl();
    //private TrainingServiceImpl trainingService;

    public int getIntInput() {
        while (true) {
            String number = input.nextLine();
            try {
                int choice = Integer.parseInt(number);
                return choice;
            } catch (Exception e) {
                System.out.println("ERROR, please try again. ");
            }
        }
    }

    public void getAllUsers() {
        userService.getAllUsers();
    }
}

и класс, выводящий всё это в консоль:

public class ConsoleOut {

    private ConsoleUI consoleUI = new ConsoleUI();
    UserServiceImpl userService = new UserServiceImpl();

    public int startPage(){

        int choice;
        System.out.println(
                "WELCOME TO TRAINING DIARY\n" +
                        "================================\n" +
                        "1) Registration\n" +
                        "2) Login\n"
        );
        System.out.print("Please select an option (or Enter -1 to quit): ");

        return choice = consoleUI.getIntInput();
    }

    public void startProgram() {
        int choice = startPage();

        consoleUI.registrationAdmin();

        while (choice != -1) {
            switch (choice) {
                case 1:
                    consoleUI.registrationUser();
                    break;
                case 2:
                    consoleUI.login();
                    break;
                case 3:
                    consoleUI.getAllUsers();
                    break;
                default:
                    System.out.println("ERROR, please try again.");
            }
            choice = startPage();
        }
        System.out.println("Have a nice day!");
    }

    public void userMenu() {
        System.out.println("Hi, I`m user");
    }

    
    public int adminPage(){
        int choice;
        System.out.println(
            "ADMIN MENU\n" +
            "================================\n" +
            "1) Show all users\n" +
            "2) Show log`s\n" +
            "3) Show all training type\n" +
            "4) Add training type\n" +
            "5) Edit training type\n" +
            "6) Delete training type\n" +
            "7) Delete USER(be carefull!!!!)\n"+
            "8) Main menu\n"
        );
        System.out.print("Please select an option (or Enter -1 to quit): ");
        return choice = consoleUI.getIntInput();
    }
    
    public void adminMenu() {

        int choice = adminPage();

        while (choice != -1) {
            switch (choice) {
                case 1:
                    consoleUI.getAllUsers();
                    break;
                case 2:
                    //adminService.showLogs();
                    break;
                case 3:
                    // adminService.showAllTrainingType();
                    break;  
                case 4:
                    consoleUI.addNewTrainingType();
                    break;  
                case 5:
                    //adminService.editTrainingType(null);
                    break; 
                case 6:
                    //adminService.deleteTrainingType(null);
                    break;   
                case 7:
                    System.out.println("Метод в разработке");
                    break;    
                case 8:
                    startProgram();
                    break;   
                default:
                    System.out.println("ERROR, please try again.");
            }
            choice = adminPage();
        } 
    }
}

При попытке запустить итерацию из главного меню получается на выходе следующее:

WELCOME TO TRAINING DIARY
================================
1) Registration
2) Login

Please select an option (or Enter -1 to quit): 3
Метод работает
{ id='1', login='admin', password='admin', role='ADMIN', name='Alex', age='38'}
WELCOME TO TRAINING DIARY
================================
1) Registration
2) Login

Please select an option (or Enter -1 to quit): 

А если запускать этот метод из меню админа получается следующее:

WELCOME TO TRAINING DIARY
================================
1) Registration
2) Login

Please select an option (or Enter -1 to quit): 2
Please enter your login: admin
Please enter your password: admin
Login Success
ADMIN MENU
================================
1) Show all users
2) Show log`s
3) Show all training type
4) Add training type
5) Edit training type
6) Delete training type
7) Delete USER(be carefull!!!!)
8) Main menu

Please select an option (or Enter -1 to quit): 1
**Метод работает**
ADMIN MENU
================================
1) Show all users
2) Show log`s
3) Show all training type
4) Add training type
5) Edit training type
6) Delete training type
7) Delete USER(be carefull!!!!)
8) Main menu

Please select an option (or Enter -1 to quit): 

Изначальная логика: логимся в систему под админом и смотрим всех пользователей.
Главная проблема в следующем:
Если (для проверки) в главном меню вводим "3" - итерация происходит успешно, список пользователей выводится в консоль.
Далее заходим админом и запускается метод adminMenu и при вводе "1" (Show all users), вызывается метод consoleUI.getAllUsers(); - тот же, что и в первом случае, при этот метод выполняется, но результата ноль!
Т.е. список пользователей не выводится.

Если запускать метод напрямую userService.getAllUser(), то такая же беда, причем даже в первом случае...

Пытался передать список напрямую в этот класс и тут его проитерировать, но ничего...


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