用java源代码学数据结构<一>: Collection , Iterator

来源:互联网 发布:网络诽谤报警流程 编辑:程序博客网 时间:2024/05/26 02:20

      曾经某位大神说过:学习编程的最好方法就是看源代码。集合类无疑是学习数据结构好的原材料。开始准备用c++的STL,由于本人能力有限,看了下vc的STL源代码,什么一重指针,二重指针,n重指针漫天都是,所以只好放弃。java没有指针,学习难度无疑大大降低,STL就只有等以后能力提高点再说了。

      集合类的源代码都可以在jdk安装目录下的src.zip文件中找到,由于篇幅有限,删除了大量非必要注释。

     先来看下Collection.java文件

/* * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/package java.util;/**   1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素,*  有些集合有序,JDK不提供本接口的实现,只提供子接口的实现(例如Set,List)*   2.所有实现Collection(或者其子接口)的类都必须包含两个构造函数:无参的构造函数,*     以及参数为Collection的拷贝构造函数**/public interface Collection<E> extends Iterable<E> {//返回集合中存在的元素。如果元素的数目超过Integer.MAX_VALUE,返回Integer.MAX_VALUEint size();//当集合不包含任何元素时,返回trueboolean isEmpty();//如果集合中包含至少一个指定对象,返回trueboolean contains(Object o);//返回可以遍历集合元素的迭代器    Iterator<E> iterator();//返回集合中所有元素组成的数组,数组元素的返回顺序要和迭代器访问集合元素的返回顺序一样Object[] toArray();//返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。<T> T[] toArray(T[] a);//如果集合不允许重复元素,且集合中已经含有该元素,返回falseboolean add(E e);//从此 collection 中移除指定元素的单个实例,如果集合中存在指定元素返回true。boolean remove(Object o);//如果此 collection 包含指定 collection 中的所有元素,则返回 true。    boolean containsAll(Collection<?> c);//将指定 collection 中的所有元素都添加到此 collection 中boolean addAll(Collection<? extends E> c);//移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。boolean removeAll(Collection<?> c);//仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。boolean retainAll(Collection<?> c);//移除此 collection 中的所有元素(可选操作)。void clear();//比较此 collection 与指定对象是否相等。通过覆盖,实现list与list相等,set与set相等boolean equals(Object o);//返回此 collection 的哈希码值。int hashCode();}



     下面是Iterator.java文件

package java.util;/** Iterator和enumerations的不同点有两处:* 1.Iterator运行调用者在迭代过程中删除集合元素* 2.Iterator 改变了函数名*/public interface Iterator<E> {// 如果仍有元素可以迭代,则返回 true。boolean hasNext();//返回迭代的下一个元素E next();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次next的过程中只能调用一次void remove();}


     以上是java集合类基本都要实现的两个接口,Collection提供集合类的一些必要方法,用于多态。Iterator类提供集合类元素的遍历,用于封装。

    一起学习,一起进步,欢迎访问我的博客:http://blog.csdn.net/wanghao109


原创粉丝点击