目录
集合的分类:
- 单列集合:只能存储一列数据的集合
- 双列集合:有两列可以存储数据,是key-value键值对进行存储
集合的框架:
单列集合
主要是Collection集合
List集合的特点:
- List集合存储元素可以重复
- 存储的元素顺序就是写入元素的顺序。
- 有索引,可以使用普通for循环进行遍历。
List集合的方法:
- public void add(int index,E element) 在此集合中的指定位置插入指定的元素
- public E remove(int index) 删除指定索引处的元素,返回被删除的元素
- public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
- public E get(int index) 返回指定索引处的元素
List集合的子实现类:
主要有包含ArrayList集合
,LinkedList集合
,vector集合
ArrayList集合:
底层是数组结构,所以查询快,增加删减较慢。线程不安全,效率高。
LinkedList集合:
底层是链表,所以增加和删除快,删减慢。
vector集合:
底层也是数组结构,但是查询慢,增加和删除快,线程安全,效率低。
LinkedList集合特有的方法:
- public void addFirst(E e) 在该列表开头插入指定的元素
- public void addLast(E e) 将指定的元素追加到此列表的末尾
- public E getFirst() 返回此列表中的第一个元素
- public E getLast() 返回此列表中的最后一个元素
- public E removeFirst() 从此列表中删除并返回第一个元素
- public E removeLast() 从此列表中删除并返回最后一个元素
set集合的特点:
- 存储的元素是没有顺序的
- 存储的元素不可以重复
- 没有索引,不可以使用普通for循环遍历
set集合的子实现类:
主要包含有HashSet集合
,TreeSet集合
HashSet集合:
底层是HashMap集合,存储元素无序,元素不可以重复,没有索引,不能使用普通for循环遍历。
TreeSet集合:
底层是TreeMap集合,不能存储重复的元素,没有索引,将元素按照规则进行排序(使用Comparable接口或者Comparator)
双列集合
主要是Map集合
Map集合的特点:
- 双列集合,一个键对应一个值
- 键不可以重复,但是值可以重复
Map集合的方法:
- V put(K key,V value) 添加元素
- V remove(Object key) 根据键删除键值对元素
- void clear() 移除所有的键值对元素
- boolean isEmpty() 判断集合是否为空
- int size() 集合的长度,也就是集合中键值对的个数
- V get(Object key) 根据键获取值
- Set keySet() 获取所有键的集合
- Collection values() 获取所有值的集合
- Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象的集合
HashMap集合的特点:
- 底层是哈希表结构(JDK1.8以前是数组+链表,JDK1.8以后是数组+链表+二叉树)
- 依赖重写hashcode和equals方法保证元素的唯一性
- 如果键存储的是自定义类型的对象,需要重写hashcode和equals方法。
TreeMap集合的特点:
- TreeMap底层是红黑树结构
- 依赖自然排序或者比较器排序,对键进行排序
- 如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则