地图的地图根据内部地图的值获取外部地图

时间:2019-05-28 07:13:07

标签: java java-8

如何使用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 个答案:

答案 0 :(得分:4)

您不需要map。只需将filter与您的条件一起使用,并将findFirst用作终端操作:

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

如果在找不到匹配项时希望使用默认值(例如null),请使用:

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