finalMap = new LinkedHashMap<>();; Ma-6ren">
gpt4 book ai didi

java - 找到第一个匹配的条目并将匹配的条目值分配给变量

转载 作者:行者123 更新时间:2023-12-01 16:23:33 25 4
gpt4 key购买 nike

想要通过使用过滤器将值分配给变量并首先查找(以避免匹配其余部分并保存迭代)。

String output = ""

Map<String, Map<String, CustomObj>> finalMap = new LinkedHashMap<>();;

Map<String, CustomObj> isinMap = new HashMap<>();
isinMap.put("REL", new CustomObj("RELIANCE ISIN"));
isinMap.put("AXIS", new CustomObj("AXISBANK ISIN"));

Map<String, CustomObj> cusipMap = new HashMap<>();
cusipMap.put("CREL", new CustomObj("RELIANCE CUSIP"));
cusipMap.put("CAXIS", new CustomObj("AXISBANK CUSIP"));


finalMap.put("ISIN",isinMap);
finalMap.put("CUSIP",cusipMap);


Map<String,String> tradeDetails = new HashMap<>();
tradeDetails.put("ISIN","AXIS");
tradeDetails.put("CUSIP","AXIS2");


finalMap.entrySet().stream().filter(finalMapEntry-> {
String value = tradeDetails.get(finalMapEntry.getKey());
return finalMapEntry.getValue().containsKey(value);

// I want following
//output = finalMapEntry.getValue().get(value).get(); //output should be AXISBANK ISIN
}
).findFirst();

我知道findFirst()会返回Optional中的第一个条目,但我希望将内部映射键的值分配给输出变量。如果在第一次尝试第 n 次尝试时找到匹配项,是否可以在流式传输时以某种方式执行此操作,并且还可以跳过其他迭代?

最佳答案

可以在这里有效地使用 getOrDefault API,如下所示:

String value = tradeDetails.entrySet()
.stream()
.map(trade -> finalMap.getOrDefault(trade.getKey(), Collections.emptyMap())
.get(trade.getValue()))
.filter(Objects::nonNull)
.findFirst() // find first non null element (existence in Map as key-value)
.map(CustomObj::getDesc) // as you need the description
.orElse("");

关于java - 找到第一个匹配的条目并将匹配的条目值分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60720218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com