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:

  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

Popularne posty z tego bloga

IntelliJ: zmiana rozmiaru czcionki scrollem

ThunderBird: jak zrobić professional stopkę