Поскольку нет общего производного типа и альтернативные элементы не требуются, один из способов - просто создать nCopies
обоих типов элементов и добавить их в результирующий список:
List<Object> list = new ArrayList<>();
list.addAll(Collections.nCopies(10, new Manager(50000, 10, "Finance Manager")));
list.addAll(Collections.nCopies(10, new Employee(30000, 5, "Accounts")));
return list;
с помощью Stream
вы можете сгенерировать их как
Stream<Manager> managerStream = Stream.generate(() -> new Manager(...)).limit(10);
Stream<Employee> employeeStream = Stream.generate(() -> new Employee(...)).limit(10);
return Stream.concat(managerStream, employeeStream).collect(Collectors.toList());
Но что может быть абсолютным действительным требованием, чтобы альтернативно перемежать элементы из обоих потоков, вы можете использовать решение, предложенное в этом ответе , но с типом, определенным как super для ваших текущих объектов, или изменением реализации для возврата Object
типа Stream. (Честно говоря, я бы предпочел первое, хотя бы предоставил выбор.)