迭代器的获取

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. kuma 学习二 centos 安装

    前边有使用minikube运行kuma,以下是在centos 上安装使用 环境准备 下载软件包 wget https://kong.bintray.com/kuma/kuma-0.1.1-centos ...

  2. 云上的三台主机构建server-proxy-agent取不到数据

    4252:20191126:172327.217 cannot send list of active checks to "xxx.190.39.152": host [ppp] ...

  3. python开发面试问题

    python语法以及其他基础部分 可变与不可变类型: 浅拷贝与深拷贝的实现方式.区别:deepcopy如果你来设计,如何实现: __new__() 与 __init__()的区别: 你知道几种设计模式 ...

  4. FPGA综合的约束

    近日发现,有些逻辑电路的综合时间约束和布局布线约束相差太大时,难以布通.此时,应该选择尽量接近的时钟约束.

  5. mac 搭建Java Spring boot 环境(idea)

    首先安装插件 安装下面的这个插件 然后重启idea,新建工程 选择新建 Springboot 框架 改写项目名称 选择类型 设置工程名称 删除多余的文件 编译工程 然后运行 1. 2. 参考: htt ...

  6. linux 系统添加jdk环境变量

    export JAVA_HOME=/usr/local/jdk1..0_79 export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_BIN ex ...

  7. 【BigData】Java基础_数组

    什么是数组?数据是可以装一组数据的变量 1.定义数组 float[] arr1 = new float[10]; // 可以装10个float数据 int[] arr2 = new int[10]; ...

  8. vs2017添加区域或者视图出错

    删除以下文件的信息:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

  9. Vector与ArrayList 的理解

    最近在看Vector与ArrayList的源码,看下他们的区别与联系. Vector是线程安全的集合类,ArrayList并不是线程安全的类.Vector类对集合的元素操作时都加了synchroniz ...

  10. C#实现图像拖拽以及锚点缩放功能

    本文主要实现C#窗体图像拖拽以及锚点缩放功能 1.新建Windows窗体应用项目,添加一个panel控件,在panel控件上添加picturebox控件 代码如下: using System; usi ...