集合类:List Set Queue Map (容器类):解决数组长度固定的问题
列表List:关心的是索引(有序)
- 特点
- 对象按照索引存储
- 可以存储重复元素
- 具有与索引相关的一套方法
- 主要实现类
- ArrayList:动态数组
- 快速迭代,少量插入元素
- LinkedList:链表
- 迭代速度慢,快速插入删除
- ArrayList
- 动态数组,动态的增加和减少元素,可以灵活的设置数组的大小
- 构造
- ArrayList():构造一个初始容量为10的空链表
- ArrayList(int init):构造一个具有初始容量的空列表
- List<E> list = new ArrayList<E>();(常用向上转型,E为包装器类)
- ArrayList<E> list = new ArrayList<E>();
- 方法:
- add(E e):将指定的元素添加到此列表的尾部
- add(int index,E element):添加到指定位置
- remove(int index):移除此列表中指定位置上的元素
- get(int index):返回指定位置上的元素
- set(int index,E element):替代指定位置上的元素
- size():返回此列表中的元素个数
- LinkedList
- 双向链表
- 构造方法:
- LinkedList()
- LinkedList(Collection<? extends E> c):构造一个包含指定 collection 中的元素的列表
- 方法:(同ArrayList)
Set 集:关心唯一性
- 特点:无序,不重复
- 主要实现类
- HashSet:使用被插入对象的Hash码
- LinkedHashSet:有序的HashSet
- TreeSet:二叉树结构,保证元素按照自然顺序进行升序排序
- HashSet
- 基于HashMap实现的,HashSet底层采用HashMap来保存所有元素
- 不允许重复
- 无序
- 方法
- add(E,e);
- clear();移除所有元素
- remove(Object o),若存在,则移除
- size():返回set中元素的数量(set的容量)
- isEmpty():判断是否为空
- TreeSet(树集)
- 数据插入后会自动排序
- 操作较慢(迭代器总是以排好序的顺序访问每个元素)
- 方法
- add(E e)
- remove(Object o)
- first():返回第一个元素(最低)
- last():返回最后一个元素(最高)
- isEmpty()
- size()
- LinkedHashSet
- 在HashSet的实现上添加了Linked的支持,在每个结点上通过一个链表串联起来,有确定的顺序。适用于有常量复杂度的高效性存取性能要求,同时又要求排序的情况
- 继承于HashSet,又基于LinkedHashMap来实现
- 方法:继承HashSet
- 三个类的比较
- HashSet
- 不能保证元素的排列顺序,顺序有可能发生变化(无序)
- 不同步,集合元素可以是null,但是只可以有一个null
- 哈希表是通过使用成为散列法的机制来存储信息,元素并没有以某种特定顺序来存放
- LinkedHashList
- 有序(元素的插入顺序),允许以插入的顺序在集合中迭代
- 遍历性能比HashSet好,插入时性能较差
- TreeSet
- 提供一个使用树结构存储Set接口实现,对象以升序顺序存储,访问和遍历的时间快
Queue
- 特殊的线性表,front删除,rear插入
- 继承了collection接口
- LikedList实现了Queue接口
- 方法
- add(E e):若队列已满,则抛出异常
- remove():移除并返回队头元素,失败时抛出异常
- element():返回队头元素
- offer(E e):添加一个元素并返回true,若队列已满,则返回null
- poll():移除并返回队头的元素,若队列为空,返回null
- peek():返回队头元素,若队列为空,则返回null
- put(E e):添加一个元素,若已满,则阻塞
- take():移除并返回队头元素
Map
- 映射(Map)
- 对象以键值对存储(key—value)
- key不允许有重复,value允许有重复
- Map中元素,可以将key序列,value序列单独抽取出来
- 使用**keySet()**抽取key序列,将map中所有的keys生成一个Set
- 使用**values()**抽取value序列,将map中所有的values生成一个Collection
- HashMap
- 基于哈希表的Map接口实现
- 非线程安全
- 使用方法
- Object put(K key,V value)
- Object get(Object K)
- containsKey(Object k)
- containsValue(Object v)
- 遍历HashMap(增强for循环)
- TreeMap
- 基于红黑树的实现
- 按照元素的自然顺序排序
- LinkedHashMap
- HashMap的ordered版本(有序)
迭代器(Interator)
- 轻量级对象
- 被Collection继承
- 功能:用于对容器的遍历
- 方法
- hasNext():判断是否有可以迭代的元素
- next():返回当前元素,并返回下一个元素
- remove():从迭代器指向的集合中移除迭代器返回的最后一个元素
泛型
- 增强代码的通用性,避免强制类型转换
- 只接受引用数据类型作为类型参数
- 语法
- class 名称 <泛型列表>
- class ArrayList