1、集合框架(Collection and Map, 集合和映射, 容器类(cpp))
集合框架是为表示是为表示和操作集合而规定的一种统一的标准体系结构
在编程中容器是用来组织和存储其他对象的对象 实现链表的类就是一个容器的实例
1)List 元素有先后次序的集合, 元素有index位置 ,元素可以重复 继承于Collection接口, 实现类
ArrayList, Vector, LinkedList 其中ArrayList查找快 LinkedList修改速度快
2) Set元素无序, 不能重复添加, 是数学意义上的集合, 继承与Collection接口, 实现类: HashSet(是
一个只有Key的HashMap)
3)Collection 集概念, 没有说明元素是否重复和有序, 使用集合的根接口,很少直接使用,其他集合都是实现类
ArrayList, HashSet
4)Map描述了:(Key: Value) 成对放置的集合, Key不重复, Value可以重复,Key重复算一个, 实现类:
HashMap(散列表算法实现) TreeMap(二叉排序树实现,利用Key排序), Map适合检查查找。
Collection Map
List Set HashMap SortedMap
ArrayList LinkedList HashSet SortedSet TreeMap
TreeSet
Collection和Map都是接口 在接口中定义了对对象的操作 添加 删除 查找
List 接口继承于Collection接口
List是有序的 在List中定义index 元素可以重复
ArrayList 实现了List接口 是一个用数组实现的List 在表中添加和删除元素时
都会进行一次数组的复制 所以添加和删除元素较慢 但是可以快速的随机访问
ArrayList源代码
public void add(int index, E element) {
rangeCheckForAdd(index);
ensureCapacityInternal(size + 1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
LinkedList 插入和删除快 在尾部插入 在头部删除 但是对随机访问的速度慢
Set 是无序的 没有定义index 元素不可以重复
HashMap 无序的 使用key - value映射来存储数据 key不可以重复 value可重复
TreeMap有序的(使用二叉树排序) 使用key-value映射来存储数据 key不可以重复 value可重复