Фильтр HashMap на основе списка возврата ключей - PullRequest
0 голосов
/ 07 января 2020

У меня есть HashMap с ключом, значения которого являются строками. Я хотел бы отфильтровать HashMap по значениям ключей, которые начинаются со строки " locationId " и возвращают значения в ключах в список строк массива. Вот как заполняется HashMap:

HashMap<String, String> hm = new HashMap<String, String>();
hm.put("locationId2", rs.getString("ORG_Id"));
hm.put("locationType2", rs.getString("ORG_Type"));
hm.put("StartDate2", rs.getString("START_DT_TM_GMT"));


hm.put("locationId3", rs.getString("ORG_Id"));
hm.put("locationType3", rs.getString("ORG_Type"));
hm.put("StartDate3", rs.getString("START_DT_TM_GMT"));


hm.put("locationId4", rs.getString("ORG_Id"));
hm.put("locationType4", rs.getString("ORG_Type"));
hm.put("StartDate4", rs.getString("START_DT_TM_GMT"));


hm.put("locationId5", rs.getString("ORG_Id"));
hm.put("locationType5", rs.getString("ORG_Type"));
hm.put("StartDate5", rs.getString("START_DT_TM_GMT"));

Мне нужны значения ORG_Id в массиве.

List<String> facilityIds = hm.entrySet().stream().filter(x -> x.getKey().startsWith("locationId")).collect(map -> map.values());

Я не могу найти, где можно поместить значения в список строк , Ошибка компиляции в том, что он не распознает метод values ​​() .

UPDATE Также попытался поместить отфильтрованный Hashmap в другой HashMap, например так:

HashMap<String, String>  facilityIds = currentOperatingSchedules.entrySet().stream().filter(map -> map.getKey().startsWith("locationId")).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));

Но получите ошибку компиляции, которую он не распознает getKey () и getValue ()

1 Ответ

1 голос
/ 07 января 2020

Это должно работать. Он работает следующим образом:

  1. Получите entrySet карты и создайте поток.
  2. Фильтр на ключ, который начинается с locationId
  3. И собрать эти значения в список.

         List<String> list = hm.entrySet().stream()
                      .filter(e->e.getKey().startsWith("locationId"))
                      .map(e->e.getValue())
                      .collect(Collectors.toList());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...