Сравните значение карты со списком с помощью Stream API

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