迭代器的获取

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

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

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

  

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

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

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

  

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

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

  

各容器遍历测试

  1. package _20191213;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.HashSet;
  6. import java.util.Iterator;
  7. import java.util.LinkedList;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Map.Entry;
  11. import java.util.Set;
  12.  
  13. /**
  14. * 迭代器的使用
  15. * @author TEDU
  16. *
  17. */
  18. public class IteratorTest {
  19. public static void main(String[] args) {
  20. //调用遍历ArrayList方法
  21. testArrayList();
  22. //调用LinkedList
  23. testLinkedList();
  24. //调用testHashMap()
  25. testHashMap();
  26. //调用HashSet
  27. testHashSet();
  28. }
  29.  
  30. /**
  31. * iterator遍历ArrayList
  32. */
  33. public static void testArrayList() {
  34. List<String> myList = new ArrayList<>();
  35. myList.add("谁");
  36. myList.add("在");
  37. myList.add("敲");
  38. myList.add("打");
  39. myList.add("我");
  40. myList.add("窗");
  41. System.out.println("-----ArrayList-------");
  42. Iterator<String> it = myList.iterator();
  43. while(it.hasNext()) {
  44. System.out.println(it.next());
  45. }
  46. }
  47.  
  48. /**
  49. * LinkedList的遍历
  50. */
  51. public static void testLinkedList() {
  52. LinkedList<String> ml = new LinkedList<>();
  53. ml.add("suck");
  54. ml.add("my");
  55. ml.add("ass");
  56. System.out.println("-----LinkedList-------");
  57. Iterator<String> it = ml.iterator();
  58. while(it.hasNext()) {
  59. System.out.println(it.next());
  60. }
  61. }
  62. /**
  63. * HashMap
  64. */
  65. public static void testHashMap() {
  66. Map<Integer,String> map = new HashMap<>();
  67. map.put(1001,"张三");
  68. map.put(1002,"李四");
  69. map.put(1003,"王五");
  70. System.out.println("-----HashMap-------");
  71. for(Iterator<Entry<Integer,String>> it = map.entrySet().iterator();it.hasNext();) {
  72. System.out.println(it.next());
  73. }
  74. }
  75. /**
  76. * HashSet
  77. */
  78. public static void testHashSet() {
  79. Set<String> set = new HashSet<>();
  80. set.add("you");
  81. set.add("geek");
  82. System.out.println("-----HashSet-------");
  83. for(Iterator<String> it = set.iterator();it.hasNext();) {
  84. System.out.println(it.next());
  85. }
  86. }
  87. }

  

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. React 引入import React 原理

    本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以我们如果使用了JSX,我们其实就是在使用React,所以我们就 ...

  2. 使用haproxy 2.0 prometheus metrics 监控系统状态

    haproxy 2.0 已经发布一段时间了,提供内部直接暴露的prometheus metrics 很方便 ,可以快速的监控系统的状态 以下是一个简单的demo 环境准备 docker-compose ...

  3. JS的ES6的基础语法

    JS的ES6 1.let let age = 12; (1). 作用: 与var类似, 用于声明一个变量 (2). 特点: 在块作用域内有效 不能重复声明 不会预处理, 不存在提升 (3). 应用: ...

  4. Flutter之网络请求

    Flutter之网络请求 一,介绍与需求 1.1,介绍 1,http一个可组合的,基于Future的库,用于发出HTTP请求.包含一组高级功能和类,可轻松使用HTTP资源.它与平台无关,可以在命令行和 ...

  5. c++字符串输入格式总结

    最近的几次笔试中,常常遇到一些输入的问题.下面说明一下几种情况. 1. 第一种就是常见的,输入数字序列,用空格分隔开,直到回车结束.这个之前一开始遇到的时候都是利用getline直接作为字符读入一行处 ...

  6. Python中的日志记录方案-logging模块&loguru模块

    原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...

  7. [转]怎样与 CORS 和 cookie 打交道

    原文地址:https://segmentfault.com/a/1190000018756960 前言 CORS 与 cookie 在前端是个非常重要的问题,不过在大多数情况下,因为前后端的 doma ...

  8. git 学习目录

    git命令方式 git - 1.基础 git - 2.github git - 3.分支 番外 git - gitHub生成Markdown目录

  9. CSAGAN:LinesToFacePhoto: Face Photo Generation from Lines with Conditional Self-Attention Generative Adversarial Network - 1 - 论文学习

    ABSTRACT 在本文中,我们探讨了从线条生成逼真的人脸图像的任务.先前的基于条件生成对抗网络(cGANs)的方法已经证明,当条件图像和输出图像共享对齐良好的结构时,它们能够生成视觉上可信的图像.然 ...

  10. Flask 上传下载文件

    上传文件示例代码 #encoding:utf8 from werkzeug.utils import secure_filename from flask import Flask,render_te ...