Как вы думаете, это лучший способ найти значение на карте внутри другой карты.
Map <String, String> map1 = new HashMap<>();
map1.put("map1|1", "1.1");
map1.put("map1|2", "1.2");
map1.put("map1|3", "1.3");
map1.put("map1|4", "1.4");
Map <String, String> map2 = new HashMap<>();
map2.put("map2|1", "2.1");
map2.put("map2|2", "2.2");
map2.put("map2|3", "2.3");
map2.put("map2|4", "2.4");
Map<String, Map> mapOfMaps = new HashMap<>();
mapOfMaps.put("MAP|map1", map1);
mapOfMaps.put("MAP|map2", map2);
Теперь, если мне нужно, значение «MAP | map2» (внутри mapOfMaps) и «map2 | 3» (внутри map2) будет равно «2.3»
Я пытался сделать что-то вроде:
System.out.println("x="+getValue(mapOfMaps,"MAP|map2", "map2|4"));
public static String getValue (Map<String, Map> map,String mapfind, String val) {
Map<Object, Object> mp = map.entrySet().stream()
.filter(x -> x.getKey().equals(mapfind))
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
System.out.println("--------"+mp);
return (String) mp.get(val);
}
но результат:
--------{MAP|map2={map2|1=2.1, map2|4=2.4, map2|2=2.2, map2|3=2.3}}
x=null
Можете ли вы помочь мне с некоторыми идеями?