`

集合(Collection)与迭代器(Iterator)

阅读更多
这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《Think In Java》说的好,所以我就引用下面的话,然后,我举例测试,并附代码于后。



测试用例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.TreeMap;
import java.util.Vector;


public class TestColleaction {

 public TestColleaction() {
  // TODO Auto-generated constructor stub
 }
 /////////////////List类/////////////////
 void testArrayList()
 {
  ArrayList al=new ArrayList();
  al.add(1);
  al.add(2);
  al.add(3);  
  Iterator it=al.iterator();//用迭代器将其迭代化,将其序列化为一个序列,
          //这样就可以遍历整个序列而不必关心底层结构
  System.out.println(al.size());
  System.out.println(it.toString());
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 } 
 /**
  * Vector是同步、线程安全的,所以如果需要的是速度,并且不在多线程环境中使中,最好选ArrayList
  * ArrayList是非同步,当然也不是线程安全的
  * 且每次Vector容量的自动扩展是按100%扩展,但是ArrayList是按50%扩展,这样使用ArrayList
  * 就会节省内存空间
  */
 void testVector()
 {
  Vector vector=new Vector();
  vector.add(1);
  vector.add(2);
  vector.add(3);
  vector.add(4);
  //System.out.println(ll.peekFirst());//读第一个值
  //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中
  //System.out.println(ll.peek());
  Iterator it=vector.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }
 /*
  * LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,
  * insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),
  * 队列(queue)或双向队列(deque)。
  */
 void testLinkedList()
 {
  LinkedList ll=new LinkedList();
  ll.add(1);
  ll.add(2);
  ll.add(3);
  ll.add(4);
  ll.addFirst(5);//链表操作可以进行前插或者是后插,中间任意插入
  ll.addLast(6);
  //System.out.println(ll.peekFirst());//读第一个值
  //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中
  //System.out.println(ll.peek());
  ll.pop();//把第一个弹出栈
  ll.push(10);//压入栈
  Iterator it=ll.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }
 /////////////////List类/////////////////
 /////////////////Map类/////////////////
 void testHashMap()
 {
  HashMap hm=new HashMap();
  //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱
  hm.put(1, null);//可以放入空值
  hm.put(2, "21");
  hm.put(3, "33");
  hm.put(4, "w434");
  hm.put(5, "5we");
  hm.put(6, "df6");
  hm.put(7, "7we");
  hm.put(8, "re8");
  //Map类都要先转换为最老的迭代Collection后,才能够转换为新的迭代Iterator
  Collection c=hm.values();
  Iterator it=c.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }
 void testHashTable()
 {
  Hashtable ht=new Hashtable();
  //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的
  //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱
  ht.put(2, "21");
  ht.put(3, "33");
  ht.put(4, "w434");
  ht.put(5, "5we");
  ht.put(6, "df6");
  ht.put(7, "7we");
  ht.put(8, "re8");
  Collection c=ht.values();
  Iterator it=c.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }
 void testTreeMap()
 {
  TreeMap tm=new TreeMap();
  //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的
  //TreeMap可以自动排序
  tm.put(2, "21");
  tm.put(3, "33");
  tm.put(4, "w434");
  tm.put(5, "5we");
  tm.put(6, "df6");
  tm.put(7, "7we");
  tm.put(8, "re8");
  Collection c=tm.values();
  Iterator it=c.iterator();
  //输出将会按参数自动排序
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }
 /////////////////Map类/////////////////
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  TestColleaction tc=new TestColleaction();
  //tc.testArrayList();
  tc.testVector();
  //tc.testLinkedList();
  //tc.testHashMap();
  //tc.testHashTable();
  //tc.testTreeMap();
 }

}
分享到:
评论

相关推荐

    Java Iterator接口遍历单列集合迭代器原理详解

    Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。...

    迭代器模式代码示例

    1. **迭代器接口(Iterator)**:定义了遍历集合元素的协议,包括初始化、判断是否还有下一个元素、获取下一个元素等方法。 2. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,保存对聚合对象中当前元素的...

    迭代器的用法

    迭代器模式的核心思想是解耦客户端代码与集合对象之间的关系,使得代码更加通用,易于维护。下面我们将详细探讨Java中迭代器的用法及其相关知识点。 1. **迭代器接口**: Java中的`Iterator`接口位于`java.util`...

    hashMap利用iterator迭代器迭代元素方法

    首先,通过`hashMap.entrySet()`获取`Entry`对象的集合,然后通过迭代器遍历这些`Entry`。例如: ```java HashMap, Integer> hashMap = new HashMap(); // 添加键值对... Iterator, Integer>> iterator = ...

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

    Java中的迭代器(Iterator)与枚举器(Enumeration)是两种用于遍历集合(Collection)的接口。在Java集合框架中,集合提供了多种数据结构存储对象,而迭代器与枚举器提供了访问这些集合中元素的方法。尽管它们的...

    设计模式之迭代器模式

    4. **具体聚合对象(Concrete Collection)**:实现了聚合对象接口,存储并管理元素,可以创建具体的迭代器实例。 迭代器模式的优点: 1. **分离遍历操作**:迭代器模式将遍历元素的操作与聚合对象的结构分离,使两者...

    使用Iterator接口遍历集合元素

    3. Iterator 迭代器采用的是快速失败(fail-fast)机制,一旦在迭代过程中检测到该集合已经被修改(通常是程序中其它线程修改),程序立即引发 ConcurrentModificationException 异常,而不是显示修改后的结果,这样...

    迭代器模式demo

    在Java、Python、C#等编程语言中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,提供了统一的遍历接口,使得用户可以方便地遍历各种数据结构。 在"迭代器模式demo"中,我们将深入理解这一模式的基本...

    java体系结构之迭代器模式.rar

    6. **Java集合框架中的迭代器**:除了基础的`Iterator`接口,Java还提供了`ListIterator`,它增加了`hasPrevious()`,`previous()`,`nextIndex()`和`previousIndex()`等方法,专为列表设计。 7. **迭代器模式与...

    java迭代器

    文章目录java迭代器Iterator 迭代器接口迭代器的方法:next():返回迭代中的下一个元素。hasNext():如果迭代具有更多元素,则返回true。remove():从基础集合中移除迭代器返回的最后一个元素。使用foreach 循环遍历...

    java专题-迭代器

    下面是一个简化的Java Collection迭代器模式的实现示例: ```java public interface Iterator { boolean hasNext(); Object next(); void remove(); } public abstract class AbstractList extends ...

    Collection、Map、List、Set、Iterator

    - `iterator()`:返回一个迭代器,用于遍历集合中的元素。 - `size()`:返回集合中的元素数量。 - `isEmpty()`:如果集合为空则返回 `true`。 - `toArray()`:将集合转换成数组。 #### Map 接口 - **定义**:`...

    Java 23种设计模式20迭代器模式.pdf

    迭代器模式(Iterator Pattern)是设计模式中的一种行为型模式,它主要用于处理聚合对象(如列表、集合等)。此模式的核心目的是提供一种方法来访问聚合对象中的元素,同时不需要暴露聚合对象的内部结构。 在软件...

    C#设计模式迭代器示例

    2. **迭代器(Iterator)**:负责遍历聚合对象中的元素。在C#中,`IEnumerator` 接口定义了迭代器的行为,包括 `Current` 属性(返回当前元素),`MoveNext` 方法(移动到下一个元素)和 `Reset` 方法(重置到初始...

    How to wrap an MFC collection into an STL compliant iterator

    Boost是一个开源的C++库集合,包含了许多实用的工具,其中`iterator_facade`是一个用于构建自定义迭代器的模板类。它能帮助我们定义一个新的迭代器类型,该类型符合STL的迭代器概念,包括前进、后退、读取和写入等...

    Map、Set、Iterator迭代详解

    - **remove()**: 可选操作,从产生此迭代器的集合中移除最后一次返回的元素。 #### 3. 使用示例 下面是一个简单的例子,展示了如何使用`Iterator`遍历一个`List`: ```java List<String> list = new ArrayList(); ...

    Java Collection集合iterator方法解析

    Java Collection 集合 iterator 方法解析 Java Collection 集合 iterator 方法是一种非常重要的方法,通过该方法我们可以对集合进行遍历和操作。下面我们将详细介绍 Java Collection 集合 iterator 方法的实现原理...

    20迭代器模式.zip

    1. **迭代器接口(Iterator)**:定义了遍历集合元素的方法,如`hasNext()`用于检查集合中是否还有下一个元素,`next()`用于获取下一个元素。在某些语言中,可能还包括`remove()`方法,用于删除当前元素。 2. **具体...

    Tedu一段Java集合Collection

    根据给定的信息,本文将详细解析“Tedu一段Java集合Collection”的知识点,涵盖集合的基本概念、集合框架中的关键接口、`Collection`接口的核心方法、集合的遍历方式、泛型的应用以及集合与数组之间的相互转换。...

    meteor-collection-iterator:从Meteor集合创建迭代器对象

    集合迭代器这个Mongo.Collection实例添加了一个方法,该方法返回一个。例子 Animals = new Mongo . Collection ( 'animals' ) ;'ant bat cat dog elk fox gnu hog' . split ( ' ' ) . forEach ( function ( animal )...

Global site tag (gtag.js) - Google Analytics