java集合_浅谈Iterable和Iterator的区别
1). Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach,进行迭代.
2). Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器了。
3). 集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用foreach进行迭代。
4). Iterator中和核心的方法next(),hasnext(),remove(),都是依赖当前位置,如果这些集合直接实现Iterator,则必须包括当前迭代位置的指针。当集合在方法间进行传递的时候,由于当前位置不可知,所以next()之后的值,也不可知。而当实现Iterable则不然,每次调用都返回一个从头开始的迭代器,各个迭代器之间互不影响。
以上这篇java集合_浅谈Iterable和Iterator的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
轻松掌握Java迭代器模式
定义:用于顺序访问集合对象的元素,不需要知道集合对象的底层表示. 特点: 1.它支持以不同的方式遍历一个聚合对象. 2.迭代器简化了聚合类. 3.在同一个聚合上可以有多个遍历. 4.在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码. 企业级开发和常用框架中的应用:java集合都实现了迭代器 具体实例: public class Demo { public static void main(String[] args) { ActualContainer container =
-
使用迭代器模式来进行Java的设计模式编程
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str = (String)it.next(); System.out
-
详解Java中Iterator迭代器的用法
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.lang.Iterable接口,被Collection继承
-
Java设计模式之迭代模式(Iterator模式)介绍
上了这么多年学,我发现一个问题,好象老师都很喜欢点名,甚至点名都成了某些老师的嗜好,一日不点名,就饭吃不香,觉睡不好似的,我就觉得很奇怪,你的课要是讲的好,同学又怎么会不来听课呢,殊不知:"误人子弟,乃是犯罪!"啊. 好了,那么我们现在来看老师这个点名过程是如何实现吧: 1.老规矩,我们先定义老师(Teacher)接口类: 复制代码 代码如下: public interface Teacher { public Iterator createIterator(); //点名 }
-
解析Java的迭代器中的fast-fail错误检测机制
fail-fast 机制是java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件.例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了:那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件. fail-fast 机制是java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,
-
Java集合框架中迭代器Iterator解析
Java里面的数组数据可以通过索引来获取,那么对象呢?也是通过索引吗?今天我们就来分析一下Java集合中获取集合对象的方法迭代-Iterator. 本篇文章主要分析一下Java集合框架中的迭代器部分,Iterator,该源码分析基于JDK1.8,分析工具,AndroidStudio,文章分析不足之处,还请指正! 一.简介 我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.has
-
浅谈java Iterator.remove()方法的用法(详解)
实例如下: @Test public void tt(){ List<String> list = new ArrayList<String>(); list.add( "0" ); list.add( "1" ); list.add( "2" ); list.add( "3" ); list.add( "4" ); list.add( "5" ); list.a
-
java使用iterator遍历指定目录示例分享
可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现 复制代码 代码如下: package archiver.util; import java.io.File;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List; public class FileIterator implements Iterator<File>, Iterabl
-
详解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实现的自定义迭代器功能示例
本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"foreach"循环遍历你的对象. import java.util.Iterator; import java.util.NoSuchElementException; /** * 演示Iterator和Iterable接口,并说明怎样编写一个用于对象数组的简单迭代器. */ public class Aa
-
Java集合Iterator迭代的实现方法
我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //do something } 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator 模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来
-
Java使用设计模式中迭代器模式构建项目的代码结构示例
迭代器(Iterator)模式,又叫做游标(Cursor)模式.GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节. 迭代器模式由以下角色组成: 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口. 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置. 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口. 具体容器角色(Concre
-
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
随机推荐
- AngularJS 使用 UI Router 实现表单向导
- 详解Vue.js入门环境搭建
- MyBatis中的模糊查询语句
- 解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
- 密码绑定至密码文本框中(TextMode设为Password)
- Android原生嵌入React Native详解
- JavaScript获得url查询参数的方法
- nginx使用IPV6的相关配置项介绍
- javascript 判断一个对象为数组的方法
- SQL Server数据库连接 Web.config如何配置
- Ajax PHP简单入门教程代码
- PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
- 截取实际长度字符串,并用空格替换
- c#操作sql server2008 的界面实例代码
- NodeJS创建最简单的HTTP服务器
- Python多进程编程技术实例分析
- JavaScript保存并运算页面中数字类型变量的写法
- sqlserver利用存储过程去除重复行的sql语句
- jQuery中animate动画第二次点击事件没反应
- JS可以控制样式的名称写法一览