栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在集合中,实现过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 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 entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + " = " + value);
        }

     Iterator遍历
        Iterator> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry 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 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 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 it=stack.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953338.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号