一.集合分类
Collection: 单列集合, 一次存一个对象
List: 可重复, 有索引
* ArrayList: 数组实现, 查找快, 增删慢
* LinkedList: 链表实现, 增删快, 查找慢
Vector: 原理和ArrayList相同, 线程安全, 效率较低
Stack: 栈, 先存的对象最后才能被取出
Set: 不重复, 无索引
* HashSet: 使用哈希算法, 去重复, 速度快.
* TreeSet: 使用二叉树算法, 按照指定顺序排序. 指定顺序的方式有两种: 自然顺序, 比较器
LinkedHashSet: HashSet的子类, 也是使用哈希算法, 但可以保留存储顺序.
Map: 键值对, 一次存两个对象. 键唯一, 可以根据键查找值.
* HashMap: 使用哈希算法对键对象去重复
* TreeMap: 使用二叉树算法对键对象排序
LinkedHashMap: HashMap的子类, 去重复的同时保留存储顺序
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重复. 线程安全, 效率略低. 键和值都不允许为null
Properties: 键和值都是String, 用来存储一些配置项
二.List的分类
1.ArrayList
数组实现, 查找快
2.LinkedList
链表实现, 增删快
也是一种队列的实现, 可以使用remove()方法获取队首的元素
3.Vector
和ArrayList原理相同, 但线程安全, 效率略低
拥有一种自己特有的迭代方式
使用elements()方法可以获取一个Enumeration, 调用hasMoreElements()方法判断是否包含下一个, 调用nextElements()获取下一个
4.Stack
Stack是一种栈结构的容器, 先存的元素最后被取出, 后存的元素先被取出
方法: push(存数据) pop(取数据),定义遍历时,由于出栈后集合个数减少,所以要注意循环次数.
三.TreeSet
1.什么是TreeSet
TreeSet是一种可以指定顺序的Set集合, 指定顺序的方式有两种: 自然顺序(Comparable), 比较器(Comparator)
*** 2.Comparable
在要放入TreeSet集合的类上实现Comparable接口, 重写compareTo()方法, 对象存入TreeSet的时候就会按照compareTo()方法排序
*** 3.Comparator
如果两个TreeSet存储同一类型对象, 需要使用不同顺序, 那么Comparable接口就无法满足这样的需求了, compareTo()方法只有一个, 无法定义两种比较方式.
如果不希望TreeSet按照Comparable的顺序排序, 可以在创建TreeSet的时候, 在构造函数中传入一个比较器
创建TreeSet对象时, 构造函数可以接收一个Comparator类型的对象
我们可以自定义一个Comparator类的子类, 重写compare()方法
一旦构造函数中传入了Comparator, TreeSet将不再按照Comparable中的顺序排序, add()方法执行时自动按照Comparator的顺序排序
四.Map集合
1.什么是Map集合
Map集合用来存储键值对, 每次存储2个对象, 一个键一个值, 可以根据键查找值, 键必须唯一.
* 2.Map集合常用方法
V put(K key, V value)
存储一个键值对, 如果键在集合中存在, 值将会覆盖原有值, 并且返回原有值.
V get(Object key)
根据键获取值, 如果不存在, 返回null
V remove(Object key)
根据键删除值, 并将值返回, 如果不存在, 返回null
boolean containsKey(Object key)
判断指定的键对象是否存在
3.Map集合的遍历
*** keySet:
Map集合的keySet()方法可以得到一个所有键对象组成的Set集合
遍历这个Set集合可以得到每一个键对象
再根据键对象即可获取值
*** entrySet:
Map集合的entrySet()方法可以得到一个所有Entry对象(键值对)组成的Set集合
遍历这个Set集合可以得到每一个Entry对象
再使用Entry的getKey()方法和getValue()方法获取键和值
4.Map集合的常用实现类
*** HashMap: 使用哈希算法对键对象去重复
*** TreeMap: 使用二叉树算法对键对象排序
LinkedHashMap: HashMap的子类, 去重复的同时保留存储顺序
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重复. 线程安全, 效率略低. 键和值都不允许为null
Properties: 键和值都是String, 用来存储一些配置项