карта карты получить внешнюю карту на основе значения внутренней карты - PullRequest
2 голосов
/ 28 мая 2019

Как мне написать код ниже, используя Java8?

for (Entry<Integer, Map<String, Object>> entry : data.entrySet()) {
  Map<String, Object> value = entry.getValue();
  if (value.get(Constants.USER_TRAN_ID).equals(stsTxn.getSeedTrade().getTransactionId())) {
    closedTaxLotByTxnId = value;
    break;
  }
}

Я ничего не понимаю после этого

data.values().stream().map(e -> e.get(Constants.USER_TRAN_ID)).filter(txnId -> txnId.equals(stsTxn.getSeedTrade().getTransactionId()));

1 Ответ

4 голосов
/ 28 мая 2019

Вам не нужно map.Просто используйте filter с вашими критериями и findFirst в качестве терминальной операции:

Optional<Map<String, Object>>
    value = data.values()
                .stream()
                .filter(m -> m.get(Constants.USER_TRAN_ID).equals(stsTxn.getSeedTrade().getTransactionId()))
                .findFirst();

Если вы хотите значение по умолчанию (например, ноль), когда совпадение не найдено, используйте:

Map<String, Object> closedTaxLotByTxnId =
           data.values()
               .stream()
               .filter(m -> m.get(Constants.USER_TRAN_ID).equals(stsTxn.getSeedTrade().getTransactionId()))
               .findFirst()
               .orElse(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...