Как преобразовать список массивов в карту с помощью Java8?

#java-8

Вопрос:

У меня есть следующие требования, и я хочу использовать Java-8 для удовлетворения желаемого решения:

Ввод ->

 ArrayList<String> places = new ArrayList<String>(
    Arrays.asList("Buenos Aires", "Córdoba", "La Plata", "Paris"));
 

Вывод-> HashMap<String,List<String>> detailsMap=new HashMap<>();

 {"Buenos Aires"=[ "Córdoba", "La Plata", "Paris"], "Córdoba"=["Buenos Aires", "La Plata", "Paris"],

"La Plata"=["Buenos Aires", "Córdoba", "Paris"], "Paris"=["Buenos Aires", "Córdoba", "La Plata"]}
 

Как я могу добиться этого с помощью Java-8?

Ответ №1:

Вот способ добиться этого с помощью потоков.

 List<String> places =  Arrays.asList("Buenos Aires", "Córdoba", "La Plata", "Paris");

Map<String, List<String>> map = places.stream().collect(Collectors.toMap(Function.identity(), e-> places.stream().filter(k -> !e.equals(k)).collect(Collectors.toList())));