2017-03-15 72 views
-2

我想了解此代碼。我知道它返回SetClassA對象,但什麼是.map(...).collect(...).filter(...)瞭解Java 8流

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

他們是方法。您可以在[Stream的api文檔](http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html)中閱讀所有關於它們的內容。 – azurefrog

+2

你能否將你的問題縮小到Javadocs中沒有回答的問題? –

+0

他們是一種與程序編程相當陌生的方法,因爲我們大多數人都已經學會了,所以在這裏學到了一些新的(和有趣的)東西。通過詢問堆棧溢出問題,您不會了解它的基礎知識。你需要研究介紹和教程。有些存在於網絡中,使用您的搜索引擎。 –

回答

1
  • map用於將Stream變換到另一個Stream,包含相同數量的元素,但應用變換函數到他們
  • filter用於從Stream刪除匹配這些對象Predicate傳遞給過濾方法
  • collect通常被稱爲對Stream轉換回Java集合

您應該查看Java文檔中的Stream API