容器

作者: insightcodeyk
出处: https://insightcodeyk.github.io/2018/03/12/Container/
声明: 本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0,转载请注明作者及出处。

1 Collection<E>接口

集合类型的根接口

总共有15种方法,记录其中常用的9个
分别是,
boolean add(E e); 向集合中添加元素e
boolean addAll(Collection<? extends E> c); 向集合中添加另一个集合中的全部元素,参数必须是同类或子类
void clear(); 移除集合众所有元素
boolean contains(Object o); 查找指定元素
boolean containsAll(Conllection<?> c) 判断集合c是否是该集合的子集
boolean isEmpty(); 判断集合是否为空
Iterator iterator(); 获取该集合的迭代器
boolean remove(Object o); 从集合众删除指定元素
int size(); 返回集合中元素个数

1.1 List<E>接口

有序集合接口,继承自Collcetion,可实现随机查找,List判断相等用Object.equals()方法

记录其不同于Collcetion的部分方法,
分别是,
boolean add(E e); 向列表尾部添加指定元素
void add(int index, E element); 在列表的指定位置插入指定元素
E get(int index); 获取列表中指定位置的元素
int indexOf(Object o); 获取指定元素的第一个索引位
int lastIndexOf(Object o); 获取指定元素的最后一个索引位
ListIterator listIterator(int index); 返回列表的迭代器,从index位置开始
E set(int index, E element); 用指定元素替代Index位置的元素

1.1.1 ArrayList<E>类

实现动态数组效果的List子类,线程不安全(不同步)

总共3个构造方法,
分别是,
ArrayList(); 构造初始容量为10的空列表
ArrayList(Collection<? extens E> c); 用指定列表c构造新列表
ArrayList(int initialCapacity); 构造指定初始容量initialCapacity的空列表

不同于其父类接口的主要方法:
void trimToSize(); 将ArrayList容量调整为列表当前大小

1.1.2 Vector<E>类

实现动态数组,和ArrayList类在大部分情况下拥有相同的方法,重要区别在于,线程安全(同步)

1.1.3 LinkedList<E>类

List接口的链表实现,插入删除效率较高,方法没有太多区别

1.1.4 Stack<E>类

实现栈结构

总共有5个方法
分别是,
boolean empty(); 测试是否栈空
E peek(); 查看栈顶元素
E POP(); 出栈
E push(E itme); 压栈
int search(Object); 返回对象在栈中位置

1.2 Set<E>接口

特点:不包含重复元素的集合,重复的定义:e1.equals(e2),这意味着当我们重写了equals方法Set将会接受不同的重复规则.

1.2.1 HashSet<E>类

用HashMap实现的Set,特点是不维护序列,优点是有非常高的查找效率

1.2.2 TreeSet<E>类

用红黑树实现的Set,特点是维护了序列

1.2.3 LinkedHashSet<E>类

一个折中的Set,维护了序列,也用了Hash

1.3 Queue<E>接口

实现队列操作的接口,其子类包括队列的常用操作方法

boolean add(E e); 也就是队列的入队操作
E element(); 获取但不出队操作
E poll(); 也就是出队操作,队列为空则返回nul

2 Map<K,V>接口

键值对类型的集合,小数据库

2.1 AbstractMap<K,V>类

提供Map接口的主要功能的实现

主要记录部分方法,
分别是,
V get(Object key); 返回指定键所映射的值;如果没有不包含键的映射关系,返回bull。是否允许Key值为null,可以在具体使用的子类中控制
Set keySet(); 获得Map中包含的键值集合
V put(K key, V value); 向Map中添加一对新的键值对关系,若该键已经存在,则更新该键值对
V remove(Object key); 若存在该键,则从Map中删除该键值对,如果没有则返回null(在不允许null的Map中)

2.1.1 HashMap类

基于哈希表的Map实现类,使用最为频繁的Map,允许使用null作为键和值.

总共有4个构造函数
分别是,
HashMap(); 默认初始容量16,默认加载因子0.75,一般不改加载因子
HashMap(int initialCapacity); 指定初始容量
HashMap(int initialCapacity, float loadFactor); 指定初始容量和加载因子
HashMap(Map<? extends K, ? extends V> m); 用m构造相同的Map
成员方法和其父类接口相同

2.1.2 TreeMap类

维护了一个顺序序列的集合,也就是说当用Iterator迭代器获取Map.Entry对象迭代的时候,迭代顺序是自然顺序或者Comparable顺序