Java中List集合遍历的六种方式

 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");

        /**
         * 第一种:下标遍历
         */
        System.out.println("============1-下标遍历==================");
        for(int i = 0 ; i < list.size() ; i++){
            System.out.println(i +" = "+list.get(i));
        }

        /**
         * 第二种:forEach遍历
         */
        System.out.println("===========2-forEach遍历================");
        int count = 0;
        for (String s : list) {
            count ++;
            System.out.println(count + " = "+ s);
        }

        /**
         * 第三种:iterator迭代器遍历
         */
        System.out.println("==========3-Iterator迭代器遍历============");
        Iterator<String> iterator = list.iterator();
        int counter= 0;
        while(iterator.hasNext()){
            counter ++;
            System.out.println(counter +" =counter= " + iterator.next());
        }

        /**
         * 第四种:jdk8的Lambda的表达式遍历(不需要下标)
         */
        System.out.println("=========4-jdk8的Lambda的表达式(不需要下标)===========");
        list.forEach(str ->{
            System.out.println(str);
        });

        /**
         * 第五种:jdk8的Lambda表达式遍历-(使用Stream.iterate获取下标)
         */
        System.out.println("========5-jdk8的Lambda表达式-(使用Stream.iterate获取下标)===========");
        Stream.iterate(0,i -> i + 1 ).limit(list.size()).forEach(i -> {
            System.out.println(i + " =Stream.iterate= " + list.get(i));
        });

        /**
         * 第六种:jdk8的Lambda表达式遍历-(使用IntStream.range获取下标)
         */
        System.out.println("=========6-jdk8的Lambda表达式-(使用IntStream.range获取下标)===========");
        IntStream.range(0,list.size()).forEach(i ->{
            System.out.println(i + " =IntStream.range= " + list.get(i));
        });
    }

控制台输出:

============1-下标遍历==================
0 = A
1 = B
2 = C
===========2-forEach遍历================
1 = A
2 = B
3 = C
==========3-Iterator迭代器遍历============
1 =counter= A
2 =counter= B
3 =counter= C
=========4-jdk8的Lambda的表达式(不需要下标)===========
A
B
C
========5-jdk8的Lambda表达式-(使用Stream.iterate获取下标)===========
0 =Stream.iterate= A
1 =Stream.iterate= B
2 =Stream.iterate= C
=========6-jdk8的Lambda表达式-(使用IntStream.range获取下标)===========
0 =IntStream.range= A
1 =IntStream.range= B
2 =IntStream.range= C
发布了14 篇原创文章 · 获赞 6 · 访问量 3051

猜你喜欢

转载自blog.csdn.net/tangyin_007/article/details/103703410