У меня есть карта карт: HashMap<String, Map<DistinctCode, String>>
.
Мне нужно извлечь значение String
из внутренних карт, просто используя DistinctCode
. Как я могу это сделать в одной строке или инструкции?
Другими словами, мне нужен метод:
mapOfMap.find(distinctcode)
Является ли это выполнимым в одной строке или заявлении?
В Java 8
List<String> list = map.values().stream().map(m -> m.get(distinctcode)).filter(Objects::nonNull).collect(Collectors.toList());
Objects.nonNull
. (+1)
С Java 8 вы можете делать
Set<String> strings = mapOfMaps.values().stream()
.map(m -> m.get(distinctCode))
.filter(v -> v != null)
.collect(Collectors.toSet());
Несколько иной подход Java 8 без нулевой фильтрации:
final Set<String> values = mapOfMaps.values().stream()
.filter(m -> m.containsKey(distinctCode))
.map(m -> m.get(distinctCode))
.collect(Collectors.toSet()); //this can be simplified using a static import
DistinctCode dv = ...;
Stream<String> res =
mom.values().stream().map(p->p.get(dv)).filter(p->p!=null);
String string2 = yourMap.get("string1").get(whateverDistinctCodeIs);
Это при условии, чтоHashMap<String1, Map<distinctcode, String2>> yourMap
и чтоString1
иString2
являются классомString
.