2017-03-15 4 views
-2

Ich versuche diesen Code zu verstehen. Ich verstehe, dass es eine Set von ClassA Objekte zurückgibt, aber was ist die .map(...) und .collect(...) und .filter(...)?verstehen Java 8 Stream

Set<ClassA> lists = event.getLists().stream() 
      .map(list -> { 
       try { 
        return ClassA.valueOf(list); 
       } catch (IllegalArgumentException e) { 
        LOG.error("unknown classA list " + list, e); 
        return null; 
       } 
      }) 
      .filter(Objects::nonNull) 
      .collect(Collectors.toSet()); 
+0

Sie sind Methoden. Sie können alles über sie in der [API Dokumentation für Stream] lesen (http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html). – azurefrog

+2

Können Sie Ihre Frage auf etwas beschränken, das in den Javadocs nicht beantwortet wird? –

+0

Sie sind Methoden einer Art, die der prozeduralen Programmierung ziemlich fremd sind, wie die meisten von uns es gelernt haben, also gibt es etwas Neues (und interessantes), das hier gelernt werden kann. Sie lernen nicht die Grundlagen davon, indem Sie Fragen zu Stack Overflow stellen. Sie müssen die Einführungen und Tutorials studieren. Einige existieren im Netz, benutzen Sie Ihre Suchmaschine. –

Antwort

1
  • map wird verwendet, um eine Stream zu einem anderen Stream zu transformieren, die gleiche Anzahl von Elementen enthält, sondern eine Transformationsfunktion, um sie
  • filter Anwendung verwendet wird, aus dem Stream diese Objekte zu entfernen, die das MATCH Predicate an die Filtermethode übergeben
  • collect wird normalerweise aufgerufen, um die Stream zurück in eine Java-Sammlung
  • zu transformieren

Sie sollten sich wahrscheinlich die Stream API in der Java-Dokumentation ansehen.