迭代器的获取

LIst与Set容器统一使用他们的对象.Iterator()方法获得迭代器对象,然后使用while循环配合迭代器的方法hasNext()及next()来遍历容器。

List<String> myList = new ArrayList<>();
Iterator<String> it = myList.iterator();

 while(it.hasNext()) {
 System.out.println(it.next());
 }

  

对于Map容器,Map容器因为底层数据结构比较特殊

第一种方法:我们需要使用Map对象调用entrySet().iterator()方法来获取迭代器。

Map<Integer,String> map = new HashMap<>();
System.out.println("-----HashMap方法一:获得内部数组对象-------");
for(Iterator<Entry<Integer,String>> it = map.entrySet().iterator();it.hasNext();) {
System.out.println(it.next());
}

  

第二种方法:获取HashMap的keySet,通过keySet()方法,然后通过得到集合获取遍历器,然后使用此遍历器遍历出key,通过Map的get方法得到value。

System.out.println("-----HashMap方法二:获得keySet-------");
for(Iterator<Integer> it = map.keySet().iterator();it.hasNext();) {
int key;
System.out.println("key="+(key = it.next())+" value="+map.get(key));
}

  

各容器遍历测试

package _20191213;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; /**
* 迭代器的使用
* @author TEDU
*
*/
public class IteratorTest {
public static void main(String[] args) {
//调用遍历ArrayList方法
testArrayList();
//调用LinkedList
testLinkedList();
//调用testHashMap()
testHashMap();
//调用HashSet
testHashSet();
} /**
* iterator遍历ArrayList
*/
public static void testArrayList() {
List<String> myList = new ArrayList<>();
myList.add("谁");
myList.add("在");
myList.add("敲");
myList.add("打");
myList.add("我");
myList.add("窗");
System.out.println("-----ArrayList-------");
Iterator<String> it = myList.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
} /**
* LinkedList的遍历
*/
public static void testLinkedList() {
LinkedList<String> ml = new LinkedList<>();
ml.add("suck");
ml.add("my");
ml.add("ass");
System.out.println("-----LinkedList-------");
Iterator<String> it = ml.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
/**
* HashMap
*/
public static void testHashMap() {
Map<Integer,String> map = new HashMap<>();
map.put(1001,"张三");
map.put(1002,"李四");
map.put(1003,"王五");
System.out.println("-----HashMap-------");
for(Iterator<Entry<Integer,String>> it = map.entrySet().iterator();it.hasNext();) {
System.out.println(it.next());
}
}
/**
* HashSet
*/
public static void testHashSet() {
Set<String> set = new HashSet<>();
set.add("you");
set.add("geek");
System.out.println("-----HashSet-------");
for(Iterator<String> it = set.iterator();it.hasNext();) {
System.out.println(it.next());
}
}
}

  

56 容器(十)——Iterator迭代器遍历容器的更多相关文章

  1. [19/03/27-星期三] 容器_Iterator(迭代器)之遍历容器元素(List/Set/Map)&Collections工具类

    一.概念 迭代器为我们提供了统一的遍历容器的方式 /* *迭代器遍历 * */ package cn.sxt.collection; import java.security.KeyStore.Ent ...

  2. C++ Primer 阅读笔记:迭代器和容器 小结

    原创 by zoe.zhang  0.写在前面的话 我是在2011年学的C++,但是那一年恰好是C++11新标准的一年,但是大学上学的C++还是基于C++98的风格的,使用的编译器也是VC6.0,啊, ...

  3. Java中遍历容器List、Map、Set的方法总结

    List List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四& ...

  4. 有关map中使用iterate迭代器遍历的不保序问题和list remove(object)的细节问题

    今天在做项目的过程中发现了如下两个问题: 一 使用map的iterator迭代器对map进行遍历得到的结果是不保序的,也就是每次输出结果都是不一样的.针对这个问题,看以下iterator迭代器的源码. ...

  5. 【C++】:STL迭代器使用---[容器::iterator iter;]

    参考文章:http://blog.csdn.net/qq_23100787/article/details/51388163 迭代器这种东西,就是为了使访问简单!! 容器::iterator iter ...

  6. vector容器+iterator迭代器

    关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm   关于iterator迭代器的描述,可参考http://www.cppblog.c ...

  7. 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】

    Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...

  8. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

      设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...

  9. Java编程思想学习(十二) 数组和容器

    一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的 ...

随机推荐

  1. 腾讯蓝鲸cmdb源码编译

    腾讯蓝鲸 cmdb 源码编译环境依赖 环境包参考: golang >= 1.8 python >= nodejs >= (编译过程中需要可以连公网下载依赖包) Python 环境 w ...

  2. 【数论】[逆元,错排]P4071排列计数

    题目描述 求有多少种长度为n的系列A,满足以下条件: 1~n这n个数在序列中各出现一次:若第i个数a[i]的值为i,则称i是稳定的.序列恰有m个数是稳定的. 输出序列个数对1e9+7取模的结果. So ...

  3. vuex实现登录状态的存储,未登录状态不允许浏览

    基础思路就是使用vuex状态管理来存储登录状态(其实就是存一个值,例如token),然后在路由跳转前进行登录状态的判断,可以使用vue-router的全局前置守卫beforeEach,也可以使用路由独 ...

  4. SpringMVC相关试题

    1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...

  5. GIT-本地仓库

    用户配置 git config --global user.name "name" git config --global user.email "123@qq.com& ...

  6. Zabbix实战-简易教程--中间件RabbitMQ监控

    一.环境 zabbix版本:3.0 二.脚本说明 .├── rabbitmq.template.xml   模板文件├── scripts  │   └── rabbitmq│   ├── api.p ...

  7. 你向 Mysql 数据库插入 100w 条数据用了多久?

    阅读本文大概需要 2 分钟. ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程 ...

  8. oc界面开发整理

    oc界面开发整理 ViewController.h from test82 #import <UIKit/UIKit.h> @interface ViewController : UIVi ...

  9. List和数组的互转

    list转数组: /要转换的list集合 List<String> testList = new ArrayList<String>(){{add("aa" ...

  10. HTML5的服务器EventSource(server-sent event)发送事件

    参考资料: HTML5的服务器(server-sent event)发送事件有什么应用场景? W3school HTML 5 服务器发送事件 『后台消息推送功能』,前端除了轮询.scoket.第三方服 ...