2015-03-13 82 views
2

我正在NetBeans IDE上使用Java。在netbeans代碼轉換的幫助下,我發現了下面的代碼,它使用不同的方法顯示相同的東西。 以下是代碼,這裏是一個ArrayList。Java Netbeans代碼轉換

//code 1 
for(int j=0;j<a.size();j++) 
{ 
    System.out.println(a.get(j)); 
} 
//code 2 
for (Integer a1 : a) { 
System.out.println(a1); 
} 
//code 3 
a.stream().forEach((a1) -> { 
System.out.println(a1); 
}); 
//code 4 
a.stream().forEach(new Consumer<Integer>() { 

     @Override 
     public void accept(Integer x1) { 
      System.out.println(x1); 
     } 
    }); 

對於最後的代碼,導入了'java.util.function.Consumer'。 我想知道這些方法之間是否存在顯着差異,如果是,那麼它們是什麼?

回答

1

創建Stream的第3和第4個片段會產生一些額外開銷,所以它們的效率會降低一些。

有一個第五選項,將在最短的寫:

a.forEach(System.out::println) 
+0

這是相當有用的,不過,我需要他們的工作對理解代碼之間的差異更多的細節。 – 2015-03-13 18:30:49

+0

@Piyush你應該閱讀關於lambda表達式,Streams和方法引用來理解第三和第四個例子,以及我的代碼片段。我不認爲前兩個需要任何解釋,因爲這是基本的Java代碼 – Eran 2015-03-13 18:33:26

+0

其他然後縮短長度,此方法是否對代碼有另一個影響?比如讓代碼更快或者什麼? – 2015-03-13 18:41:37