Java: anyMatch ze streamów i nie trzeba zagnieżdżonych forów, żeby sprawdzić istnienie wartości
Pytanie było takie: Jak to zrobić, żeby tyle tych forów zagnieżdżonych ominąć. Odpowiedź to można użyć streamów, ale nie są szybsze od forów, więc i tak się nie opłaca. Dla formalności pokazuję kod:
Bardzo mnie interesuje co o tym sądzisz, dlatego byłoby mi miło, jeśli byś napisał w komentarzu coś o tym, może być cokolwiek :)
Map<String, Map<String, Map<String, Boolean>>> map3 = new HashMap<>(); Map<String, Map<String, Boolean>> map2 = new HashMap<>(); Map<String, Boolean> map11 = new HashMap<>(); Map<String, Boolean> map12 = new HashMap<>(); Map<String, Boolean> map13 = new HashMap<>(); map11.put("Value11", false); map12.put("Value12", false); map13.put("Value13", false); map2.put("Value21", map11); map2.put("Value22", map12); map2.put("Value23", map13); map3.put("Value31", map2); /*if (map3.containsValue(true)) { System.out.println("true"); } else { System.out.println("false"); }*/ boolean isAnyMatch = map3.values().stream().anyMatch(m2 -> m2.values().stream().anyMatch( m1 -> m1.values().stream().anyMatch( value -> value))
); if (isAnyMatch) { System.out.println("true"); } else { System.out.println("false");
}
Bardzo mnie interesuje co o tym sądzisz, dlatego byłoby mi miło, jeśli byś napisał w komentarzu coś o tym, może być cokolwiek :)
Komentarze
Prześlij komentarz