迭代器的获取

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. FDQuery Out of memory

    4万行记录 FDQuery查询 Out of memory sql server 可以查询成功 First chance exception at $7505D722. Exception class ...

  2. Pymysql+Pandas+Sqlalchemy数据库更新脚本编写

    #导入需要的包,使用pymysql操作数据库 #pandas包很强大,可以直接读取数据表,创建dataframe数据结构,同时可以直接将dataframe导出到数据库 #sqlalchemy创建引擎, ...

  3. Linux禁止ping和开启ping的方法

    Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping.   一.通过修改 ...

  4. Spring Boot 怎么打一个可执行 Jar 包?

    传统的 Java 应用程序都需要打一个 war 包,并到到 Tomcat webapps 目录下运行. Java 支持打 Jar 包,但没有提供一个标准的方式在一个 Jar 包内再加载嵌入别的 Jar ...

  5. java基础之 内部类 & 嵌套类

    参考文档: 内部类的应用场景 http://blog.csdn.net/hivon/article/details/606312 http://wwty.iteye.com/blog/338628 定 ...

  6. 【Gamma】Scrum Meeting8

    目录 写在前面 进度情况 任务进度表 燃尽图 照片 写在前面 例会时间:6.6 22:30-22:45 例会地点:微信群语音通话 代码进度记录github在这里 进度情况 任务进度表 注:点击链接跳转 ...

  7. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  8. 使用Rome读取RSS报错,org.xml.sax.SAXParseException: 前言中不允许有内容。

    这是我遇到过的最奇葩的错误 new URL的时候,使用静态变量就会报错org.xml.sax.SAXParseException: 前言中不允许有内容. URL url = new URL(Strin ...

  9. 【phpstudy2016】apache配置Tp5.0,获取表单数据总是多了一个路由变量,解决

    1.用的apahce配置tp5.0的php环境 2.发现input()过来的数据,总是多了一个变量,那就是路由变量, 类似[array(2) { ["/index/index/form_su ...

  10. Python 下载依赖包环境经常失败超时解决方法

    人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...