Java使用Iterator迭代器遍历集合数据的方法小结

本文实例讲述了Java使用Iterator迭代器遍历集合数据的方法。分享给大家供大家参考,具体如下:

1、使用迭代器遍历ArrayList集合

package com.jredu.oopch07;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Ch05 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List list = new ArrayList<>();
        //集合
        list.add(1);
        list.add(2);
        list.add(3);
        //Iterator迭代器
        //1、获取迭代器
        Iterator iter = list.iterator();
        //2、通过循环迭代
        //hasNext():判断是否存在下一个元素
        while(iter.hasNext()){
            //如果存在,则调用next实现迭代
            //Object-->Integer-->int
            int j=(int)iter.next(); //把Object型强转成int型
            System.out.println(j);
        }
    }
}

2、使用迭代器遍历Set集合

package com.jredu.oopch08;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Ch01 {
    public static void main(String[] args) {
        //存储数据的地址
        Set set = new HashSet<>();
        //存储数据
        set.add(new Theme(1,"标题1","简介1"));
        set.add(new Theme(2,"标题2","简介1"));
        //遍历数据
        Iterator iter = set.iterator();
        while(iter.hasNext()){
            Theme theme = (Theme)iter.next();
            System.out.println(theme.getId()+theme.getTitle()+theme.getRemark());
        }
    }
}

3、使用迭代器遍历Map集合

package com.jredu.oopch08;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Ch03 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map map = new HashMap<>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        //所有键值对中的键,组成一个集合
        Set set = map.keySet();
        Iterator iter = set.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());//打印出map中的键(1,2,3)
        }
        //打印出值
        //values所有的值组成的一个集合
        Collection col = map.values();
        //重写了toString方法
        System.out.println(col);//打印出a,b,c的值
    }
}
package com.jredu.oopch08;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Ch04 {
    public static void main(String[] args) {
        Map map=new HashMap<>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        //必须掌握
        //所有键值对中的键,组成成一个set集合
        Set set=map.keySet();
        System.out.println(set);
        //values所有的值组成的一个集合
        Collection col=map.values();
        System.out.println(col);
        //获取所有的键和值
        //entrySet可以得到由所有键值对组成的集合
        //里边存储的是所有的数据(键-值)
        Set<Map.Entry<Integer, String>> entrySet=map.entrySet();
        Iterator<Map.Entry<Integer, String>> iter=entrySet.iterator();
        while(iter.hasNext()) {
            Map.Entry<Integer, String> entry=iter.next();
            System.out.println("键:"+entry.getKey());
            System.out.println("值:"+entry.getValue());
        }
//        Iterator iter=col.iterator();
//        while(iter.hasNext()) {
//            System.out.println(iter.next());
//        }
//        Iterator iter=set.iterator();
//        while(iter.hasNext()) {
//            System.out.println(iter.next());
//        }
//        System.out.println(map);
    }
}

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

时间: 2019-11-19

Java编程Iterator迭代器设计原理及实现代码示例

我们知道迭代器(Iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素.那么Iterator迭代器的设计原理是什么呢?迭代器问什么定义了一个借口,而不是一个类呢? 我们假设迭代器迭代数据的功能定义为了一个类,那么,会有这样的问题.不同的集合,由于数据结构不一样,所以他们的存储方式也是不一样的.也就是说,迭代器获取的时候,获取的方式是变化的,也就是不固定的.所以把这种方式定义为具体的实现是不合理的. 无论何种集合,他们肯定都有获取的功能,而且不知道什么时候就没有数据了.所有他

详解Java中Iterator迭代器的用法

迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.lang.Iterable接口,被Collection继承

Java中迭代器Iterator的使用解析

什么是迭代器 在Java中,有很多的数据容器,对于这些的操作有很多的共性.Java采用了迭代器来为各种容器提供了公共的操作接口.这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果. 在Iterator接口中定义了三个方法: Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍历数据的方法,即用Iterator迭代器,虽然Iterator

Java集合框架中迭代器Iterator解析

Java里面的数组数据可以通过索引来获取,那么对象呢?也是通过索引吗?今天我们就来分析一下Java集合中获取集合对象的方法迭代-Iterator. 本篇文章主要分析一下Java集合框架中的迭代器部分,Iterator,该源码分析基于JDK1.8,分析工具,AndroidStudio,文章分析不足之处,还请指正! 一.简介 我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.has

详解Java中的迭代迭代器Iterator与枚举器Enumeration

迭代器Iterator接口 1.迭代器接口 Iterable 内置方法iterator(), 返回一个新建的 Iterator. 如: public interface Iterable { Iterator Iterator(); } Iterator 有 hasNext() 和 next() 两个方法要实现. public interface Iterator { boolean hasNext(); Item next(); void remove(); //可选实现 } 2.实现 导入

java 使用foreach遍历集合元素的实例

java 使用foreach遍历集合元素的实例 1 代码示例 import java.util.*; public class ForeachTest { public static void main(String[] args) { // 创建集合.添加元素的代码与前一个程序相同 Collection books = new HashSet(); books.add(new String("book1")); books.add(new String("book2&quo

Java实现Map集合遍历的四种常见方式与用法分析

本文实例讲述了Java实现Map集合遍历的四种常见方式与用法.分享给大家供大家参考,具体如下: ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1. 无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:map.keySet()){ System.out.println("key : "+s+" value : "+map.get(s)); } 2. 通过Map.Entry(

java中循环遍历删除List和Set集合中元素的方法(推荐)

今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录如下: 错误代码的写法,也就是报出上面异常的写法: Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks(); for(CheckWork checkWork : set){ if(checkWor

java中List集合及其遍历详解

1. 首先List<E>集合继承与Collection<E>,是一个接口. ①  Collection (集合框架是JDK1.2版本出现的) ②   list:是有序的,元素可以重复,以为该集合体系有索引.    经常用到的是实现该接口的ArrayList和LinkedList类 ③   Arraylist:  底层的数据结构使用的是数组结构, 特点: 查询速度很快,但是增删稍慢.线程不同步 LinkedList: 底层使用的是链表数据结构. 特点: 增删速度很快,查询稍慢. Ve

Java集合Set、List、Map的遍历方法

本文实例讲述了Java集合Set.List.Map的遍历方法,分享给大家供大家参考. 具体方法如下: package com.shellway.javase; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.uti

java集合迭代器Iterator中的remove陷阱

package TestList; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.TreeSet; public class TestIterator { /**      * @param args      */     public static void main(String[] args) {         // TODO Auto-gen

Java Iterator迭代器_动力节点Java学院整理

迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的.只要拿到这个对象,使用迭代器就可以遍历这个对象的内部. 1.Iterator Java提供一个专门的迭代器<<interface>>Iterator,我们可以对某个序列实现该interface,来提供标准的Java迭代器.Iterator接口实现后的功能是"使用"一个迭代器. 文档定义: Package java.util; publici

Java Set简介_动力节点Java学院整理

1. 概述   Java 中的Set和正好和数学上直观的集(set)的概念是相同的.Set最大的特性就是不允许在其中存放的元素是重复的.根据这个特点,我们就可以使用Set 这个接口来实现前面提到的关于商品种类的存储需求.Set 可以被用来过滤在其他集合中存放的元素,从而得到一个没有包含重复新的集合. 2. 常用方法 按照定义,Set 接口继承 Collection 接口,而且它不允许集合中存在重复项.所有原始方法都是现成的,没有引入新方法.具体的 Set 实现类依赖添加的对象的 equals()

Java List简介_动力节点Java学院整理

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解.  List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引  ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步  LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)  Vector:底层是数组数据结构 线

Java Map简介_动力节点Java学院整理

Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如HashMap 类. 注:将可变对象用作映射键时必须格外小心.当对

十大常见Java String问题_动力节点Java学院整理

本文介绍Java中关于String最常见的10个问题: 1. 字符串比较,使用 "==" 还是 equals() ? 简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象). 而 equals 判断两个字符串的值是否相等. 除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法. 如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题 2. 对于敏感信息,为何使用char[]要比

Java数组优点和缺点_动力节点Java学院整理

数组是Java语言的基本知识之一,在深入学习Java基础后,我们都知道那些容器,在之后,在我们学习.工作的过程中基本就是使用容器了,很少很使用数组,那么为什么还要有数组呢,我也是今天才遇到这个问题,专门的找资料学习了一下. 数组与其他种类的容器之间的区别有三方面:效率.类型和保存基本类型的能力,当然现在有泛型,保存类型的区别已经不大了. 数组较容器,最大的优点就是效率.在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式,数组就是一个简单的线性序列,这使得元素访问非常快速,无论使用

Java线程让步_动力节点Java学院整理

yield()介绍 yield()的作用是让步.它能让当前线程由"运行状态"进入到"就绪状态",从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权:也有可能是当前线程又进入到"运行状态"继续运行! yield()示例 下面,通过示例查看它的用法. // YieldTest.java的源码 class ThreadA extends Thread{ public

Java二分法查找_动力节点Java学院整理

算法 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2. 开始令front=0(指向3),end=7(指向88),则mid=3(指向36).因为mid>x,故应在前半段中查找. 令新的end=mid-1=2,而front=0不变,则新的mid=1.此时x>mid,故确定应在后半段中查找. 令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a

Java线程休眠_动力节点Java学院整理

sleep()介绍 sleep() 定义在Thread.java中. sleep() 的作用是让当前线程休眠,即当前线程会从"运行状态"进入到"休眠(阻塞)状态".sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间:在线程重新被唤醒时,它会由"阻塞状态"变成"就绪状态",从而等待cpu的调度执行. sleep()示例 下面通过一个简单示例演示sleep()的用法. // SleepTest.java的源码 cl

Java方法重写_动力节点Java学院整理

一.方法重写(Override) 在Java中如何来定义重写:Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),同时也可以对父类中的方法进行扩展,以增强自己的功能,这样就称之为重写,也称为复写或者覆盖.所谓方法重写就是子类的方法和父类中继承下来的方法具有完全相同的方法名.返回值类型.方法的参数个数以及参数类型,这样才能被称为方法重写. 代码体现: // 这是父类的定义 public class Person