集合与Iterator

Iterator模式 是遍历集合类的标准访问方法。为的是不暴露类的内部结构,将访问逻辑从集合类中抽象出来。

想循环遍历数组,链表等结构数据,客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集合类和客户端代码中分离出来,每一种集合对应一种遍历方法,客户端代码无法复用。

Iterator模式总是用同一种逻辑来遍历集合:
for(Iterator it = c.iterater(); it.hasNext(); ) { ... }
Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
首先看看java.util.Iterator接口的定义:
public interface Iterator { boolean hasNext(); Object next(); void remove(); }
依赖前两个方法就能完成遍历,典型的代码如下:
for(Iterator it = c.iterator(); it.hasNext(); ) { Object o = it.next(); // 对o的操作... }
每一种集合类型都实现了Iterator接口,较常用的几种集合: ArrayList, LinkedList,HashSet,HashMap,TreeMap 五种都有实现 Iterator接口。

时间: 2024-10-28 11:01:42

集合与Iterator的相关文章

集合之Iterator

迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //do something } 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator模式是用于遍历集合类的标准访问方法.它可以把访问逻

集合遍历过程iterator, 添加删除元素报异常

list  set  遍历过程中添加或者删除元素,报异常. 使用iterator 也会报异常 ConcurrentModificationException remove只能用迭代器的remove,而不能用集合的remove方法,iterator的remove会维护索引的一致性 iterator it = list.iterator(); while(it.hasnext(0){ obj = it.next(); it.remove(); } 用java.util.concurrent中的类代替

集合输出接口-Iterator迭代输出-古老枚举输出:Enumeration

1.Iterator迭代输出(95%) Iterator是集合输出的主要接口,那么此接口定义如下: public interface Iterator<E> { public boolean hasNext() ; // 判断是否还有下一个数据 public E next() ; // 取得当前数据 } 实现代码: 1 package cn.demo; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import j

【Java学习笔记】&lt;集合框架&gt;Iterator的子接口ListIterator

1 import java.util.ArrayList; 2 import java.util.Iterator; 3 import java.util.List; 4 5 public class Test3 { 6 7 public static void main(String[] args) { 8 List list = new ArrayList(); 9 10 list.add("abc1"); 11 list.add("abc2"); 12 lis

Scala中的集合:Iterator、BitSet、Set、Map、Stack、Vector、List、Array

 5.   util包 5.1.     架构 http://www.scala-lang.org/docu/files/collections-api/collections.html The following figure shows all collections in package scala.collection. These are all high-level abstract classes or traits, which generally have mutable

集合之Iterator迭代器

terator迭代器概述: java中提供了很多个集合,它们在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成. Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来.一直把集合中的所有元素全部取出.这种取出方式专业术语称为迭代. 集合中把这种取元素的方式描述在Iterator接口中.Iterator接口的常用方法如下: hasNext()方法:用来判断集合中是否有

Java的集合、Iterator迭代器

1.集合(1)集合存储的元素必须是引用类型数据[自动装箱(基本类型->包装类)]jdk1.5版本之后 建立一个  demo01  类 package com.oracle.demo01; public class demo01 { private String name; private Integer age; public demo01() { super(); } public demo01(String name, Integer age) { super(); this.name =

集合中Iterator迭代器的使用以及实现原理。

collection集合元素通用的获取方式,在取之前先要判断集合中有没有元素,如果有就把这个元素取出来,继续在判断,如果还有就再取出来,一直把集合中的元素全取出来,这种去出方式叫做迭代. 迭代器的作用就是获取集合中的元素的方式. 接口iterator有两个抽象的方法: boolean hasnext()判断集合中有没有可以被取的元素. next() 去除元素中的下一个元素. 演示代码如下: public class Iterator_Demo { public static void main(

java基础(18):集合、Iterator迭代器、增强for循环、泛型

1. 集合 1.1 集合介绍 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.2 ArrayList集合存储元素 练习一:ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayLi