集合遍历的几种方式

  1. 迭代器(Iterator)方式遍历;

  2. For Each 方式遍历;

  3. Lambda 表达式遍历(JDK 1.8+);

  4. Streams API 遍历(JDK 1.8+)。

  • 使用 Streams API 单线程的方式进行遍历;

  • 使用 Streams API 多线程的方式进行遍历。

迭代器

常见的迭代器有两种
Iterator
hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false
next():返回集合中Iterator指向位置后面的元素
remove():删除集合中Iterator指向位置后面的元素

ListIterator(List集合特有)
add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置之前
hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回false
hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false
next():返回列表中ListIterator指向位置后面的元素
nextIndex():返回列表中ListIterator所需位置后面元素的索引
previous():返回列表中ListIterator指向位置前面的元素
previousIndex():返回列表中ListIterator所需位置前面元素的索引
remove():从列表中删除next()或previous()返回的最后一个元素
set(E e):从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素e

一.相同点
都是迭代器,Iterator和ListIterator都提供了删除方法。

二.不同点
1.使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。
2.ListIterator有add方法,set()方法,可以实现对象的添加,修改,而Iterator不能。
3.ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以。
4.ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

import java.util.*;


public class test {
    public static void main(String[] args) {
        Integer [] integers={1,2,3,4,5,6};
        ArrayList<Integer> list = new ArrayList<>(Arrays.asList(integers));
        HashMap<String,String> hashMap =new HashMap<>();
        Set<Map.Entry<String, String>> entries = hashMap.entrySet();


        // 迭代器
        ListIterator<Integer> iterator = list.listIterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        Iterator<Map.Entry<String, String>> iterator1 = entries.iterator();
        while(iterator1.hasNext()){
            System.out.println(iterator1.next().getKey()+" "+iterator1.next().getValue());
        }

        System.out.println("-----------------");
        //for-earch
        for(Integer lis:list){
            System.out.println(lis);
        }

        System.out.println("-----------------");

        //lambda
        list.forEach(System.out::println);
        System.out.println("-----------------");
        entries.forEach(v->{
            System.out.println(v.getKey());
            System.out.println(v.getValue());
        });
        System.out.println("-----------------");
        //stream
        list.stream().forEach(System.out::println);
        entries.stream().forEach(v->{
            System.out.println(v.getKey());
            System.out.println(v.getValue());
        });
        System.out.println("-----------------");

        list.parallelStream().forEach(System.out::println);

    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值