Java里面遍历list的方式
生活随笔
收集整理的這篇文章主要介紹了
Java里面遍历list的方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:Java里面遍歷list的方式
對于Java語言有點陌生,我嘗試熟悉遍歷list(或者其他集合)的所有方法(或者是其他正確的語法)和它們每一個方法的優缺點
給定 List的list對象,我知道有下列方法去循環所有的元素
基于循環的(當然這也等價于while/do while循環)
// 不推薦哈,看下面 for (int i = 0; i < list.size(); i++) {E element = list.get(i);// 1 - 可以調用元素的方法// 2 - 可以使用i去做一些基于下標的方法調用// ... }循環的增強版本 (很好地回答了這個問題)
for (E element : list) {// 1 - 調用元素的方法// ... }迭代器
for (Iterator<E> iter = list.iterator(); iter.hasNext(); ) {E element = iter.next();// 1 - 調用元素的方法// 2 - 可以用 iter.remove() 方法從list上移除當前元素// ... }List迭代器
for (ListIterator<E> iter = list.listIterator(); iter.hasNext(); ) {E element = iter.next();// 1 - 調用元素的方法// 2 - 可以用 iter.remove() 方法從list上移除當前元素// 3 - 可以用 iter.add(...) 在當前元素和下一個元素之間插入新元素// 4 -可以用iter.set(...) 取代當前元素// ... }Java函數
list.stream().map(e -> e + 1); // 可以對e用一個轉換函數Iterable.forEach, Stream.forEach, …
(來自Java的stream API的映射方法 )
在Java8集合實現了 Iterable接口的類型(例如所有的list)里面,都要一個forEach的方法,可以代替上面的循環語句使用了(提供一個優秀的對比那就是另一個問題了)
Arrays.asList(1,2,3,4).forEach(System.out::println); // 1 - 調用元素的方法 // 2 - 需要一個里面元素的引用用來移除它們 // // 3 - 從功能上分離迭代和發生在每一個元素上的行為Arrays.asList(1,2,3,4).stream().forEach(System.out::println); // Same capabilities as above plus potentially greater utilization of parallelism // 實現相同的功能,上面的更加好,因為使用了并行 // 注意:因此,執行的順序是不能保證的 // 想了解更多關于這個的請看 [Stream.forEachOrdered][stream-foreach-ordered]還有任何的其他方法嗎?
(順便說一下,我不是對提升性能感興趣。作為一個開發人員,我只是想知道什么方式是可用的而已)
回答
一種JDK8風格的迭代:
public class IterationDemo {public static void main(String[] args) {List<Integer> list = Arrays.asList(1, 2, 3);list.stream().forEach(elem -> System.out.println("element " + elem));} }文章翻譯自Stack Overflow:https://stackoverflow.com/questions/18410035/ways-to-iterate-over-a-list-in-java
總結
以上是生活随笔為你收集整理的Java里面遍历list的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己拉屎便秘是什么意思
- 下一篇: 怎么样把Java的字符串转化为字节数组?