Java集合与数组是相似的,都用于保存一组对象,并提供一些操作来管理对象。然而,不同于数组的是,当添加或删除元素时集合的大小是可以自动变化的。Java集合不可以存放基本类型数据(比如int,long或double等),而是存放基本类型数据的包装类。
设计目标
Java 集合最核心的目标就是提供一套“小而美”的API,方便开发人员使用。为了保证核心接口足够小,顶层接口(指 Collection 与 Map)不会区分集合是否可变、是否可修改、是否可改变大小等细节。另外,接口定义的部分方法是可选的,如果实现时不支持该方法,直接抛出UnsupportedOperationException。
为了保证核心接口中方法足够少,核心接口应该只包含以下情况中的方法:
- 基本操作,每个接口都会使用到的操作,比如添加、删除、插入、查找等
- 由于非常严重的性能问题,某个重要的实现类要重写的方法
集合类型
Java 将集合分成两大类:
- 最基本的 Collection 接口类
- 不算真正意义上集合的 Map 接口类
将 Map 加入到集合框架中,大概是考虑到 Map 虽然是 key-value 形式,但是 Map 具有集合性质的操作,可以把 Map 当作集合来处理,即如果暂时忽略key与value之间的映射,那么key和value完全可以看作是两个集合。
Collection 接口类又可以分为:
- List 接口
- Set 接口
- Queue 接口
综合起来,Java集合可以分为以下四种类型:
- 保持插入顺序的List集合
- 无序但不重复的Set集合
- 带有优先顺序的Queue集合,比如FIFO。
- 带有索引的Map集合