集合:
数组的缺陷:
1.数组长度固定不变,不能很好的适应元素数量动态变化的情况。
2.可获取数组长度,却无法直接获取数组中实际存储的元素个数。
3.数组采用内存中分配连续空间的存储方式存储,根据元素信息查找时效率比较低,需要多次比较。
通常说Java集合框架由3大接口组成:Map接口,List接口,Set接口。
Collection接口是最基本的集合接口,可存储一组不唯一,无序的对象。
List接口:
继承Collection接口,是有序集合,可存储一组不唯一,有序的对象。常用的实现类为:ArrayList 和 LinkedList。
ArrayList :
ArrayList集合操作数据效率比较低,遍历和随机访问数据效率比较高。存放有序,不唯一的数据。
方法 | 说明 |
boolean add(Object o) | 在列表的末尾添加元素o,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素o,索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素,去除的元素是Object类型,使用前需要进行强制类型转换 |
void set(int index,Object obj) | 将index索引位置的元素替换为obj元素 |
boolean contains(Object o) | 判断列表中是否存在指定元素o |
int indexOf(Object o) | 返回元素在集合中出现的索引位置 |
boolean remove(Object o) | 从列表中删除元素o |
Object remove(int index) | 从列表删除指定位置的元素,起始索引位置从0开始 |
LinkedList常用方法:
LinkedList查找效率比较低,插入,删除元素效率比较高。存放无序,不唯一的数据,采用链表存储方式。
方法 | 说明 |
void addFirst(Object obj) | 将指定元素插入到当前集合的首部 |
void addLast(Object obj) | 将指定元素插入到当前集合的尾部 |
Object getFirst() | 获得当前集合的第一个元素 |
Object getLast() | 获得当前集合的最后一个元素 |
Object removeFirst() | 移除并返回当前集合的第一个元素 |
Object removeLast() | 移除并返回当前集合的最后一个元素 |
Set接口:
Set接口是Collection接口的另一个常用子接口。Set接口中存储一组唯一,无序的对象。常用的实现类有HashSet。
HashSet集合类在不知道数据的索引并且需要全部遍历的情况下查找效率比较高。
HashSet集合的特点:1.集合内的元素是无序排列的
2.HashSet类是非线程安全的
3.允许集合元素值为null
HashSet常用方法:
方法 | 说明 |
boolean add(Object o) | 如果Set中尚未包含指定元素o,则添加指定元素o |
void clear() | 从Set中移除元素 |
int size() | 返回Set中的元素的数量(Set的容量) |
boolean isEmpty() | 如果Set不包含任何元素,则返回true |
boolean contains(Object o) | 如果Set包含指定元素o,则返回true |
boolean remove(Object o) | 如果指定元素o存在于Set中,则将其移除 |
Iterator接口:
Iterator接口表示对集合进行迭代的迭代器。为集合而生,专门实现集合的遍历。
主要方法:1.hasNext():判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true。
2.next():访问要访问的下一个元素。
Map接口:
概述:Map接口存储一组成对的键(K)值(V)对象。Key值不要求有序,但不允许重复。Value也不要求有序,但可以重复。
Map接口的常用方法:
方法 | 说明 |
Object put(Object key,Object value) | 将相互关联的一个key与一个value放入该集合,如果此Map接口中已经包含了key对应的value, 则旧值将被替换 |
Object remove(Object key) | 从当前集合中移除与指定key相关的映射,并返回该key关联的旧value,如果key没有任何关联, 则返回null |
Object get(Object key) | 获得与key相关的value,如果该key不关联任何非null值,则返回null |
boolean containsKey(Object key) | 判断集合中是否存在key |
boolean containsValue(Object value) | 判断集合中是否存在value |
boolean isEmpty() | 判断集合中是否存在元素 |
void clear() | 清除集合中的所有元素 |
int size() | 返回集合中元素的数量 |
Set keySet() | 获取所有key的集合 |
Collection values() | 获取所有value的集合 |
最常用的Map实现类是HashMap,其优点是查询指定元素效率高。
Collections类:
Collections类是Java提供的一个集合操作工具类,包含了大量的静态方法。
Collection是集合接口,Collections是集合的操作类。
Collections类常用方法:sort()排序,binarySearch()查找元素并返回下标,fill()替换所有元素,reverse()反转。