当前位置:  技术问答>java相关

看Collection API是看得我云里雾里,谁能教我说清楚道明白?分数不封顶,教会我这个笨蛋就结

    来源: 互联网  发布时间:2015-03-08

    本文导语:     小弟在准备SCJP,看到CollectionAPI看得糊了,来求高人指点迷津。   哪位能用简洁的语言从Collection Type,Collection Implemntation in the API一直到Collection and Maintenance系统的讲讲吗? | 关于Iterator(《T...

   小弟在准备SCJP,看到CollectionAPI看得糊了,来求高人指点迷津。
  哪位能用简洁的语言从Collection Type,Collection Implemntation in the API一直到Collection and Maintenance系统的讲讲吗?

|
关于Iterator(《Think in java》):

枚举器(反复器)
在任何集合类中,必须通过某种方法在其中置入对象,再用另一种方法从中取得对象。毕竟,容纳各种各样的对象正是集合的首要任务。在Vector中,addElement()便是我们插入对象采用的方法,而elementAt()是提取对象的唯一方法。Vector非常灵活,我们可在任何时候选择任何东西,并可使用不同的索引选择多个元素。
若从更高的角度看这个问题,就会发现它的一个缺陷:需要事先知道集合的准确类型,否则无法使用。乍看来,这一点似乎没什么关系。但假若最开始决定使用Vector,后来在程序中又决定(考虑执行效率的原因)改变成一个List(属于Java1.2集合库的一部分),这时又该如何做呢?
可利用“反复器”(Iterator)的概念达到这个目的。它可以是一个对象,作用是遍历一系列对象,并选择那个序列中的每个对象,同时不让客户程序员知道或关注那个序列的基础结构。此外,我们通常认为反复器是一种“轻量级”对象;也就是说,创建它只需付出极少的代价。但也正是由于这个原因,我们常发现反复器存在一些似乎很奇怪的限制。例如,有些反复器只能朝一个方向移动。
Java的Enumeration(枚举,注释②)便是具有这些限制的一个反复器的例子。除下面这些外,不可再用它做其他任何事情:
(1) 用一个名为elements()的方法要求集合为我们提供一个Enumeration。我们首次调用它的nextElement()时,这个Enumeration会返回序列中的第一个元素。
(2) 用nextElement()获得下一个对象。
(3) 用hasMoreElements()检查序列中是否还有更多的对象。

②:“反复器”这个词在C++和OOP的其他地方是经常出现的,所以很难确定为什么Java的开发者采用了这样一个奇怪的名字。Java 1.2的集合库修正了这个问题以及其他许多问题。

只可用Enumeration做这些事情,不能再有更多。它属于反复器一种简单的实现方式,但功能依然十分强大。为体会它的运作过程,让我们复习一下本章早些时候提到的CatsAndDogs.java程序。在原始版本中,elementAt()方法用于选择每一个元素,但在下述修订版中,可看到使用了一个“枚举”:

//: CatsAndDogs2.java
// Simple collection with Enumeration
import java.util.*;

class Cat2 {
  private int catNumber;
  Cat2(int i) {
    catNumber = i;
  }
  void print() {
    System.out.println("Cat number " +catNumber);
  }
}

class Dog2 {
  private int dogNumber;
  Dog2(int i) {
    dogNumber = i;
  }
  void print() {
    System.out.println("Dog number " +dogNumber);
  }
}

public class CatsAndDogs2 {
  public static void main(String[] args) {
    Vector cats = new Vector();
    for(int i = 0; i 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 这几个是什么服务,不明白为什么一直开启?一直都没弄明白过
  • 请教大家!!!java如何实现多重继承?接口该如何使用?份数可以再加,只要我明白了
  • 一个问题,有点不明白!!!
  • linux crontab 设定老是想不明白。。。。
  • 有句话不明白,求解释
  • 关于终端的一些小问题,不明白。。。
  • Makefile中的一句不明白,关于shell中sed函数
  • 我在看一个GNU软件时发现有这么一句,不明白什么意思
  • 不明白seteuid()的作用
  • i=$(($i+1))。为什么i=$($i+1)就不行呢?不明白里面那层括号起什么作用。
  • 在init脚本中屡屡看到类似命令,不明白的说:mount -t sysfs /sys /sys
  • VMWare上装了个Fedora,但装不上VMWareTools,新手,不明白为什么
  • 总算明白gettext函数是怎么用的了!散分
  • 想了解LINUX一定能明白汇编语言吗?
  • 请问:什么是组合?看了THINGKING IN JAVA后,还是不是很明白
  • 我不是很明白,请帮忙!
  • 一个问题,有点不明白!!! iis7站长之家
  • 关于字体的问题?实在是看不明白sun的api文档!!!!!!!!!!!!
  • 灌水贴子,有什么不明白到www.52jsp.com论坛看看
  • 小弟一直弄不明白this这个关键字。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3