#java #spring-boot #java-8 #java-stream
#Ява #пружинный ботинок #java-8 #java-поток
Вопрос:
Нужно собрать общее значение из списка строк и из КАРТЫ, имеющей строку в качестве КЛЮЧА и Список в качестве ЗНАЧЕНИЯ.
Отрывок:
public Maplt;String, Listgt; maping() throws Exception { String id="test"; Listlt;Stringgt; no = new ArrayListlt;Stringgt;(); no.add("123456"); no.add("654321"); no.add("11223344"); Maplt;String, Listgt; info = new HashMaplt;String, Listgt;(); info .put(id, no); return info ; }
public List getInfo() { Listlt;Stringgt; listNo = new ArrayListlt;Stringgt;(); listNo.add("123456"); listNo.add("654321"); listNo.add("135790"); listNo.add("123987"); listNo.add("11223344"); return listNo; }
В третьем методе нужно сравнить список и значение карты и собрать общее нет в списке. Пожалуйста, руководство по использованию JAVA 8 Stream API
Комментарии:
1. Не совсем ясно, чего именно вы хотите достичь. С заданным идентификатором вы могли
map.get(id)
бы получить список, связанный с идентификатором, а затем сравнить все значения этого списка, если они присутствуют в списке, предоставленномgetInfo()
. Тогда ваш вопрос вообще не имеет ничего общего с картой и сводится просто к «как найти пересечение между двумя списками?»
Ответ №1:
public Listlt;Stringgt; collectCommonNumbers(Maplt;String, Listlt;Stringgt;gt; inputMap, Listlt;Stringgt; inputList) { return inputMap.values().stream().flatMap(List::stream).distinct().filter(inputList::contains).collect(Collectors.toList()); }