List、Set、Map、Queue、Deque、Stack的遍历方式总结

List接口:有ArrayList,LinkedList等实现类,List集合是有序的,可有重复元素的集合;ArrayList集合的内部是由数组来储存的,因此,是可以通过索引来访问元素的,所以可以通过for循环来遍历该集合,也可以用Iterator(迭代器)来遍历集合,for each也是通过实现迭代器来遍历集合的;LinkedList集合是一种双向链表,随着链表长度的增加,for循环遍历的效率随之变低,因此,不能用for循环来遍历LinkedList集合,可以用for each来实现Iterator(迭代器)来遍历集合。

Set接口:Set接口有HashSet,LinkedHashSet,TreeSet等实现类,Set集合是无序的,元素唯一的集合;Set集合都是以Map集合作为存储结构的,Map集合是根据Key(键值)直接找到对应的Value,没有索引,只可以用Iterator(迭代器)来遍历集合,因此,HashSet是以HashMap为存储结构的,只可以用Iterator(迭代器)来遍历集合,因此,就可以用for each来遍历集合了;LinkedHashSet,TreeSet等集合的遍历方式也都是这样的。

Map接口:Map接口有HashMap,LinkedHashMap,TreeMap等实现类,Map集合是双列集合,是键Key~值Value映射表,可以由键Key直接找到值Value,没有索引,只可以用Iterator(迭代器)来遍历集合,因此,也可以用for each来遍历。

Queue队列接口:Queue队列接口有LinkedList,ArrayBlockingqueue等实现类,Queue队列是一种先进先出的数据结构(First In First Out),只可以从队尾添加元素,从队头出元素(First In First Out),LinkedList是无界队列,ArrayBlockingqueue是有界队列。

遍历Queue可以while循环:

        String s=null;
        while((s=queue1.poll())!=null) {
            System.out.println(s);
        }

也可以用Iterator(迭代器)来遍历集合,因此,也可以用for each来遍历。

Deque双端队列接口:Deque双端队列接口是Queue接口的子接口,因此,LinkedList是Deque接口的实现类,Deque双端队列可以从队头添加元素,也可以从队尾添加元素;既可以从队头取出元素,也可以从队尾取出元素。

遍历Deque可以while循环:

        遍历Deque双端队列(顺序)
        String s=null;
        while((s=deque.pollFirst())!=null) {
            System.out.println(s);
        }

    遍历Deque双端队列(逆序)
        String s1=null;
        while((s1=deque.pollLast())!=null) {
            System.out.println(s1);
        }

也可以用Iterator(迭代器)来遍历集合,因此,也可以用for each来遍历。

Stack栈:Stack类是List接口的实现类,Stack栈是一种后进先出的数据结构(Last InFirst Out),最后进入栈的元素必须最早弹出。

遍历Stack栈也可以用while循环:

        遍历并出栈(逆序输出)
        while(!stack.isEmpty()) {
            System.out.println(stack.pop());
        }

 也可以用Iterator(迭代器)来遍历集合,因此,也可以用for each来遍历:

        遍历并出栈 (顺序输出)
         for(String s:stack) {
            System.out.println(s);
         }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值