用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
- 用java源代码学数据结构<一>: Collection , Iterator
- 用java源代码学数据结构<七>: BST
- Java数据结构(一)——StringBuffer,StringBuilder,Collection,Iterator,List
- 共同学习Java源代码--数据结构--Collection接口
- java--collection和Iterator
- Java Collection Iterable Iterator
- 用java源代码学数据结构<二>: Vector 详解
- 用java源代码学数据结构<三>:ArrayList 详解
- 用java源代码学数据结构<四>: LinkedList 详解
- 用java源代码学数据结构<五>: Stack 详解
- 用java源代码学数据结构<六>: HashSet HashMap 详解
- Java数据结构-Collection(一)
- Java数据结构详解(一)-Collection接口
- Java集合Collection与Iterator
- linkin大话数据结构--Collection和Iterator
- 用iterator接口遍历collection
- 共同学习Java源代码-数据结构-TreeSet(一)
- 共同学习Java源代码-数据结构-HashMap(一)
- POJ 2932 —— 计算几何&&平面扫描
- Irrlicht学习备忘录——0 引擎特点
- 人工智能游戏编程真言学习笔记之 通用触发器系统
- 51单片机入门~chapter2
- NYIST山谷
- 用java源代码学数据结构<一>: Collection , Iterator
- Irrlicht学习备忘录——1 HelloWorld
- linux的磁盘分区
- oracle 单引号 双引号
- Vim as Python IDE on windows
- 开放API
- 如何使用搜索技巧来成为一名高效的程序员
- HDU2007平方和与立方和
- 《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?