`
JAVA天地
  • 浏览: 674296 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><div>这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《Think In Java》说的好,所以我就引用下面的话,然后,我举例测试,并附代码于后。</div> <div> <div><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/fenglibing/75e6f2605a6241598f959778a99cc09d.png"></div> <div></div> </div> <div></div> <div></div> <div><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/fenglibing/3fbed4404aa1433ea369debb3e4746d4.png"></div> </shapetype><shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 420pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png" o:title=""></imagedata></shape>

测试用例:

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&gt; hashMap = new HashMap(); // 添加键值对... Iterator, Integer&gt;&gt; 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&lt;String&gt; 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