总结JAVA中的容器

来源:互联网 发布:手机端淘宝首页的模板 编辑:程序博客网 时间:2024/06/11 03:16

JAVA中容器实际上只有4种,Map、List、Set、Queue,它们各有两到三个实现版本。下面此图来自《Think in JAVA第四版》,图中常用的容器用黑色粗线框表示;接口用点线框表示;普通的或具体的类用实线框表示;带有空心箭头的点线表示一个特定的类实现了一个接口;实心箭头表示某个类可以生成箭头所指向的类的对象。

1.数组将数字与对象联系起来,保存着类型明确的对象,查询对象时无需进行类型转换,可以是1维2维...n维,可以保存基本数据类型,数组一旦产生,其容量大小就是固定的,不会发生大小变化。

2.Collection保存单一元素,Map保存相关联的键值对,由于JAVA的泛型机制,我们可以指定容器存放的对象类型,保证不会错误的将其它类型对象放入其中,当明确对象类型时,从容器中获取元素并不需要类型转换。我们可以向Collection和Map中添加更多的元素,它们会自动调整大小尺寸。容器不能存放基本数据类型,但自动包装机制会执行基本类型到容器中所持有的包装器类型之间的双向转换。

3.List也像数组一样建立了数字索引和对象的关系,数组和List都是排好序的容器,但List能够自动扩充容量。

4.ArrayList对于大量的随机访问十分有效,而LinkedList对于大量的从List中间插入删除元素十分有效。

5.Queue与栈的行为均由LinkedList提供方法。

6.Map是一种将对象与对象关联的容器,HashMap用于快速访问;TreeMap用于按键排序存储,访问能力不如HashMap;LinkedHashMap保持元素插入的顺序,但通过散列提高了访问速度。

7.Set不接受重复元素,HashSet用于提供快速的查询能力;TreeSet保持元素出于排序状态;LinkedHashSet以插入顺序保存元素。

8.最好不要使用过时的Vector、Hashtable、Stack。

9.除了TreeSet以外所有的Set都拥有和Collection完全一样的接口。List和Collection存在明显的不同,尽管List的方法均在Collection中。在Queue接口中的方法都是独立的,创建具有Queue功能实现的时候,不需要使用Collection方法。Map和Collection之间唯一重叠的就是Map可以使用entrySet和values方法来产生Collection。

原创粉丝点击