Давайте упростим код перед его преобразованием в лямбда-выражения
public static Map<String, List<String>> agg(){
List<String> list = Arrays.asList("Item A", "Item B", "Item C");
List<String> servers = Arrays.asList("Server A", "Server B", "Server C", "Server D");
Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
map.put(list.get(i), new ArrayList<>(servers));
}
return map;
}
Я просто упростил создание копии массива.
Конвейер для преобразования из одной формы данных в другую в Java 8 содержитследующие шаги:
- stream
- map (преобразовать из формы в другую)
- lower (отфильтровать нежелательные значения)
- collect (собирать результаты)
Поскольку ваши данные не нужно преобразовывать, просто собирать их в другой структуре, карта и уменьшение не нужны
public static Map<String, List<String>> agg(){
List<String> list = Arrays.asList("Item A", "Item B", "Item C");
List<String> servers = Arrays.asList("Server A", "Server B", "Server C", "Server D");
Function<String, String> keyFunction = key -> key;
Function<String, List<String>> valueFunction = key -> new ArrayList<>(servers);
return list.stream()
.collect(Collectors.toMap(keyFunction, valueFunction));
}
Эти функции могут быть встроенными ирезультат будет:
public static Map<String, List<String>> agg(){
List<String> list = Arrays.asList("Item A", "Item B", "Item C");
List<String> servers = Arrays.asList("Server A", "Server B", "Server C", "Server D");
return list.stream()
.collect(Collectors.toMap(key -> key, key -> new ArrayList<>(servers)));
}