JAVA 拾遗之 Vector

概要

上回剖析了 ArrayList 的源码,今天继续来剖析一下两个集合类型的源码 --- Vector。

Vector 类用起来就像数组一样可以使用整数索引来访问容器中的内容。和数组的区别是 Vectror 可以根据需要改变容量,以适应 Vector 创建后进行的添加或者删除元素操作。

Vectror 容器会通过维护 capacity 和 capacityIncrement 来......

JAVA 拾遗之 ArrayList

概要

上篇文章已经总结了最原始的集合接口 Collection 和 工具类 Iterator 迭代器。这篇文章将更全面的梳理一下 Java 集合体系。

在 Java 中,集合类主要是从 Collection 和 Map 这两个接口 extends 或者 implements 来的。

Collection 体系树图:

JAVA 拾遗之集合接口

概要

与现代等数据结构类库一样(C++ 中的 STL),Java 集合类库也将接口与实现分离。值得一提的是从 Java 1.5 之后,集合类都是带有类型参数的泛型类,这对于开发带来的便利性不言而喻。

集合接口Collection

在 Java 类库中,集合类的基本接口是 Collection 接口。Collection 只表示一组对象,这些对象也称之为 collection 的元素。一......

JAVA 拾遗之泛型程序设计

更多补充内容请看:协变与逆变 文章。

泛型程序设计可以使我们编写的代码可以被很多不同类型的对象所重用,比起杂乱无章的使用 Object 变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。下面就来总结下泛型程序设计的要点。

泛型类

泛型类就是具有一个或者多个类型变量的类。下面就是一个简单的泛型类:

public class Pair<T, U> {......

JAVA 拾遗之 switch 与 String

在 Java1.7 版本之前,switch case 能够用来比较 byte, short, int, char, enum(枚举类型是通过该常量在所有枚举常量中的序号进行比较的)。在 Java1.7 版本之后 switch case 增加了对 String 的比较能力。像 byte, short, char 等都是通过数值及转换成对应的数值进行比较的,那么 String 又是如何比较的呢?为了一......