1. 集合类(容器类)
- 保存数量不确定的数据,以及具有映射关系的数据(关联数组)
- Set代表无序,不可重复的集合(Set集合无法记住添加元素的顺序,所以元素不能重复)
- List代表有序,重复的集合
- Map代表具有映射关系的集合(key-value对形式,key不可重复)
- Queue代表一种队列集合
- 集合保存对象的引用变量
2. Set
- Set的三个实现类都是线程不安全的
- HashSet:
* 不能保证元素顺序排列,顺序可能与添加顺序不同
* HashSet不是同步的
* 集合元素值可以为null
* 底层用数组实现,默认长度为16,容量超出后扩大为原来的2倍
* 元素顺序和添加顺序一致
* 不允许集合元素重复
* 根据元素的实际值大小自动按照升序进行排序
* 向TreeSet中添加对象时会调用compareTo(Object obj)进行比较
* TreeSet中应当存放同一个类的对象,否则会产生ClassCastException
* 专为枚举类设计的集合类
* 在内部以位向量的形式存储
* 不允许加入null元素
3. List
* 是基于数组实现的List类,封装了一个动态的允许再分配的Object\[\]数组
* 初始长度为10
* 添加元素超过该数组长度时会自动增加为原来的3/2倍+1
* ArrayList是线程不安全的
* 适合存储少量数据,查找快
* LinkedList以链表的形式保存集合中的元素,在执行插入、删除时有较好的性能
* LinkedList可以作为List集合、双端队列、栈使用
- ListIterator相比于Iterator增加了向前迭代的功能
- Iterator只能迭代List接口下的容器
4. Queue
* 是比较标准的队列实现类
* 按照队列元素的大小顺序进行保存
* 不允许插入null元素
- Deque代表双端队列,允许从两端操作队列的元素
- ArrayDeque既可以作为栈使用(push(),pop()),也可以作为队列使用(offer(),poll())
- ArrayList、ArrayDeque、Vector内部以数组的形式保存集合中的元素,在随机访问时性能最好
5. Map
- Map用于存放具有映射关系的数据
- Map中key,value都可以是任何引用类型的对象
- key不可重复
- key和value之间存在单向一对一关系
- 放入重复的key时,新的value会覆盖原有的value,并返回别覆盖的value值
- HashMap时线程不安全的
- Properties类可以把Map对象和属性文件关联起来,从而将Map的key-value写入属性文件中或从文件中读取属性到Map中
- TreeMap时红黑树结构,存储key-value时需要对key进行排序
- EnumMap在内部以数组形式保存,根据key的自然顺序排序,不允许null作为key
还没有评论,来说两句吧...