浅谈List、Set、Map、Queue、Deque、Stack的遍历方式

本文详细介绍了Java中集合类的遍历方式,包括List、Set、Map以及Queue和Deque的迭代和遍历方法。针对List,讲解了for循环、foreach循环和iterator的使用;对于Set,重点在于其无序性及如何通过foreach和iterator遍历;Map的遍历则涉及keySet()和entrySet()两种方法。同时,文章也涵盖了Queue和Deque的遍历,包括可能导致队列变空的遍历方式以及迭代器遍历。最后,特别提到了栈的遍历,强调了栈的后进先出特性及其遍历注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在集合中,实现过iterable接口的集合类都可以调用iterator对象进行对集合的遍历;
集合分为collection和map在collection下又分为list和set
List集合是有序集合可以通过索引查找元素位置i

list集合的遍历方式总共有三种
第一种是for循环
for(int i=0;i<lise.size();i++){
    System.out.println(list.get(i));
}
第二种是foreach循环(这种循环相当于使用iterator遍历)

for(String s:list){ 
    System.out.println(s);
}
第三种是调用iterator对象遍历
Iterator it  = lists.iterator();
while(it.hasNext()){
    System.out.println(it.next);
}
set集合是一个不包含重复元素,无序的集合。Set集合底层是通过map进行存储,并且set集合没有索引下标,不存在get()方法
所以set集合的遍历方式有两种
第一种foreach循环(这种循环相当于使用iterator遍历):

for(String s:set){
    System.out.println(s);
}

第二种是调用iterator对象遍历:

iterator it  = set.iterator(); //获取iterator对象
while(it.hasNext()) { //判断是否存在下一个元素
    System.out.println(it.next()); //获取下一个元素 
}
Map集合是以键值对的方式存储元素,所有Map集合的Key是无序不可重复的
Map的遍历方式有
第一种map的keySet()方法返回的Set集合
    foreach循环遍历
        for (String key : map.keySet()) {
            Integer value = map.get(key);
            System.out.println(key + " == " + value);
        }
    Iterator遍历
        Iterator<Integer> iterator = map.keySet().iterator();
        while(iterator.hasNext()) {
            Integer key = iterator.next();
            System.out.println("key = " + key+ ", value = " + map.get(key));
        }

第二种map的entrySet()集合
    foreach循环遍历
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + " = " + value);
        }

     Iterator遍历
        Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<Integer, String> m = it.next();
            System.out.println("key = " + m.getKey() + ", value = " + m.getValue());
        }
队列Queue实现了一个先进先出(FIFO:First In First Out)的有序表,它只允许在集合的队首进行删除操作,队尾进行插入操作。并且Queue是一个接口常用实现类是LinkedList
Queue的遍历方式

第一种方式(会导致队列变空)
    String item=null;
    while((item=que2.poll())!=null) {
        System.out.println(item);
    }

第二种迭代器遍历
    foreach遍历(相当于使用iterator遍历)    
        for(String item:que2)
        {
            System.out.println(item);
        }
    iterator遍历
        Iterator<String> it=que2.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }


双端队列Deque是两端都允许对元素进行插入与删除操作
Deque的遍历方式
第一种(会导致队列变空)
    String item=null;
    while((item=que2.pollLast())!=null) {
        System.out.println(item);
    }
第二种迭代器遍历
    foreach遍历(相当于使用iterator遍历)    
        for(String item:que2)
        {
            System.out.println(item);
        }
    iterator遍历
        Iterator<String> it=que2.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
要注意的是第一种方法与第二种方法遍历的顺序相反            

栈Stack是一种后进先出(LIFO:Last In First Out)的数据结构。它只允许在集合的队尾进行插入与删除操作
栈的遍历方式与队列不同,必须考虑到是否发生栈为空的情况
第一种方法
    while(!s.isEmpty()) {
        System.out.println(s.pop());        
    }
第二种方法迭代器遍历
    foreach循环遍历(相当于使用iterator遍历)
        for(String item:stack) {
            System.out.println(item);
        }
    iterator遍历
        Iterator<String> it=stack.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾远望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值