一、 概述
# 主要集合 List、Set、Map [java.util包]
- List Set 实现Collection接口
- 又称容器
# 容器与数组
- 长度:数组长度固定、集合长度可变
- 存放内容:数组存放基本类型数据、集合存放类对象引用
# List接口、 Set接口、Map接口、Collection接口特征
- Collection接口是List、Set接口父接口,通常情况下 不能直接使用
- List接口 允许存放重复对象,按对象的插入顺序排队
- Set接口 不允许存放重复对象, 按自身内部排序规则排序
- Map接口 以键值对形式存放对象[key-vaule]
键对象不可以重复、值对象可以重复,按自身内部排序规则排序
二、 Collection接口
# 常用方法 -- 概述
·添加
- add(E obj) 添加对象
- addAll(Collection<? extends E> col) 添加集合col中的所有对象
·移除
- remove(Object obj) 从集合中移除对象
返回值boolean,存在指定对象返回true,否则返回false
- removeAll(Collection<?> col) 移除集合col中的所有对象 存在指定对象返回true。。。
- retainAll(Collection<?> col) 仅保留集合col中的所有对象 存在符合移除条件对象返回true
- clear() 移除集合所有对象
·查看
- contains(Object obj) 查看是否存在指定对象,存在返回true,否则返回false
- containsAll(Collection<?> col) 查看 集合col中的所有对象 是否都存在,存在返回true。。。
- isEmpty() 查看集合是否为空 空返回true 否则返回false
- size() 查看大小 返回集合中对象个数 返回int型
·转化
- iterator() 序列化集合对象 返回Iterator<E>型 通过返回实例可以遍历集合对象
- toArray() 转数组 获得一个包含所有对象的Object型数组
- toArray(T[] t) 转数组 获得一个包含所有对象的指定类型数组
·对比
- equals(Object obj) 查看两对象是否为同一个对象,是返回true,否则返回false
# addAll()方法 ---- addAll(Collection<? extends E> col)
· 异常抛出 :两集合对象类型一致,否则编译错误
如果对集合col进行了泛化,那么被添加集合中的所有对象都必须符合泛化类型,
否则在编译时排除异常 [E 表示用来泛化的类型]
三、 List集合
# 概述
- List集合为列表类型, 以线性方式存储对象
- 内容 : List接口 以及 List接口的所有实现类
# List接口~常用方法
·添加
- add(int index, Object obj) 向指定索引位置添加对象,其他对象索引位置相对后移一位
- addAll(int, Collection coll) 向指定位置添加集合中所有对象
·删除
- remove(int index) 删除指定位置对象
·修改
- set(int index, Object obj) 修改指定位置对象
·查看
- get(int index) 获得指定位置对象
- indexOf(Object obj) 获得指定对象索引位置。存在多个时,返回第一个索引位置。不存在返回-1
- lastIndexOf(Object obj) 获得指定对象索引位置。存在多个时,返回最后一个索引位置。不存在返回-1
·转化
- listIterator() 获得一个包含所有对象的listIterator型实例
- listIterator(int index) 获得一个包含从位置index开始以后的所有对象的listIterator型实例
- subList(int fromIndex, int toIndex)截取List集合返回[fromIndex位置包含 toIndex位置不包含]
# ArrayList类
· 概述
- 实现List接口 数组结构保存对象
- 优点: 便于对集合进行快速的随机访问 [根据索引位置访问集合对象]
- 缺点: 向指定位置插入删除 速度较慢
# LinkedList类
· 概述
- 实现List接口 链表结构保存对象
- 优点: 便于对象的、插入删除
- 缺点: 随机访问 速度较慢
· 专有操作方法
- addFirst(E obj) 指定对象插入列表开头
- addLast(E obj) 指定对象插入列表结尾
- getFirst() 获得列表开头对象
- getLast() 获得列表结尾对象
- removeFirst() 移除列表开头对象
- removeLast() 移除列表结尾对象
四、 Set集合
# 概述
- Set集合为集类型,无序
- 不存放重复对象
# HashSet类
· 概述
- 优点:快速定位集合元素
- 对象唯一性:添加到由HashSet类实现的Set集合对象,需要重新实现equals()方法,保证唯一性
- 排序:按照哈希码排序,根据对象哈希码确定对象的存储位置 [重新实现hashCode()]
# TreeSet类
· 概述
- 实现了java.util.SortedSet接口 保证遍历集合时按照递增顺序获得对象
自然顺序递增排列:存入对象 实现Comparable接口
指定比较器递增排序:通过比较器对由TreeSet类实现的Set集合中的对象进行排序
· TreeSet类实现的 java.util.SortedSet接口方法
- comparator() 获得集合采用的比较器。 返回Comparator类型,无返回null
- first() 返回集合中排序第一的对象
- last() 返回集合中排序最后的对象
- headSet(E toElement) 返回 在对象toElement(不包含) 之前的所有对象的Set集合
- subSet(E fromElement, E toElement) 返回对象fromElement(包含)和对象toElement(不包含)之间的Set集合
- tailSet(E fromElement) 返回 在对象fromElement(包含) 之后的所有对象的Set集合
五、 Map集合
# 概述
- Map集合为映射类型 (key-value)
映射中每个对象都是成对出现 每个对象都有一个相应的键对象(key)
检索对象时 必须通过相应的键对象来获取值对象(value) [键对象必须唯一]
- 键对象决定对象在映射中的存储位置[散列码]
- 通过散列技术处理产生散列码,散列码作为一个偏置量
偏置量相对于分配给映射的内存区域的起始位置,由此确定内存位置
- 理想状态下,散列码应该是在给定范围内均匀分布的整数值,每个键对象得到不同的散列码
- Map接口实现类:HashMap TreeMap
- Map集合允许值对象为null,且没有个数限制
# Map~常用方法
·添加
- put(K key, V value) 向集合中添加指定键-值映射关系
- putAll(Map<? extends K, ? extends V> t) 以映射集合形式,添加多个映射关系
·查看
- containsKey(Object key) 查看是否存在指定键的映射关系,存在返回true,否则false
- containsValue(Object value) 查看是否存在指定值的映射关系,存在返回true,否则false
- get(Object key) 通过键对象返回对应的值对象[值对象可以为null], 没有返回null
- isEmpty() 查看集合是否存在键值对 不存在返回true 存在返回false[此时已分配内存空间]
- size() 查看集合映射关系个数,返回int型
- equals(Object obj) 查看指定对象与该对象是否为同一对象 是返回true 否则返回false
·删除
-clear() 移除集合中所有映射关系
# HashMap类
· 概述
- 通过哈希码对其内部映射关系进行快速查找
对于添加和删除映射关系更有效
- 允许null作为键对象,但只能有一个,键对象唯一
- 重写hashCode()方法 【不唯一原则,分散原则】
# TreeMap类
· 概述
- 映射关系存在一定顺序 [有序]
- 不允许键对象为null
- 实现子接口java.util.SortedMap
· SortedMap接口实现方法
- comparator() 获得集合采用的比较器,返回Comparator型,无返回null
- firstKey() 返回集合中排序第一位的键对象
- lastKey() 返回集合中排序最后一位的键对象
- headMap(K toKey) 截取集合 第一位到toKey(不包含) 返回SortedMap集合
- subMap(K fromKey, K toKey) 截取集合 fromKey(包含)到toKey(不包含) 返回SortedMap集合
- tailMap(K fromKey) 截取集合 fromKey(包含)到最后一位 返回SortedMap集合