#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())));