》》容器(也称为“ 集合 ”),在任何需要时都可以扩充自己以容纳你置于其中的所有
东西。因此,不需要知道将来会把多少个对象置于容器中,只需要创建一个容器
对象,然后让它处理所有细节。
》》好的面向对象语言都有一组容器,它们作为开发包的一部分。
》》Java 在其标准库中也包含有大量的容器。
》》在某些类库中,一两个通用容器足够满足所有的需要;但是在其他类库(例如java)
中,具有满足不同需要的各种类型的容器,例如 List (用于存储序列)、Map(也
称为关联数组,用来建立对象之间的关联),Set (每种对象类型只持有一个),
以及诸如队列、树、堆栈等更多的构件。
》》从设计的观点来看,真正需要的只是一个可以被操作,从而解决问题的序列。
》》如果单一类型的容器可以满足所有需要,那么就没有理由设计不同种类的序列了。
然而还是需要对容器有所选择,这有两个原因:
第一,不同容器提供了不同类型的接口和外部行为。堆栈相比于队列就具备不同的
接口和外部行为,也不同于集合和列表的接口和行为。它们之中的某种容器
提供的解决方案可能比其他容器要灵活得多。
第二,不同的容器对于某些操作具有不同的效率。
补充:上述操作以及其他操作的效率,依序列底层结构的不同而存在很大的差异。
》》接口 List 所带来的抽象,把在容器之间进行转换时对代码产生的影响降到最小限度。
》》容器的参数化类型机制:创建的容器,知道自己所保存的对象的类型,从而不需要
向下转型以及消除犯错误的可能。这种机制在java中 ,称为泛型。
《泛型:
一对尖括号,中间包含类型信息,通过这些特征就可以识别对泛型的使用。
例如,可以用下面这样的语句来创建一个存储 Shape 的 ArrayList
ArrayList<Shape> shapes = new ArrayList<Shape>( );
为了利用泛型的优点,很多标准类库构件够已经进行了修改。
》