集合总结:
什么是集合?集合是一个容器,存放的是对象的引用,集合中只能存储对象。
集合的优、缺点?
优点:可以自动扩张,不需要设置存储长度。
缺点:性能相比较数组来说比较低,因为集合的底层操作也是数组,所以进行包裹后性能就会变低。
位置:java.util.* 包下;
分类
单值:
Collection(接口)
|
|---- List(接口)
| |----- ArrayList * 特点:有下标、可重复、初始容量(10个)、可以使用普通的for循环遍历、非线程安全、JDK 1.2提出的、
| | 有序插入(和数组一样按照插入的顺序排列)、可以为null
| |----- LinkedList 特点:链表形式存储、有序插入(和数组一样按照插入的顺序排列)、可以为null、插入的效率高、读取的速度低
| | 对两端可以很方便的操做、在做新增和删除的时候效率很高、线程安全。
| |----- Vector 特点:线程安全、可重复、初始容量(10个)、比ArrayList性能低、比较老的类(保留类)、有下标、可以为null、JDK 1.0提出的.
|
|
|---- Set(接口/去重)
| |----- HashSet * 特点:乱序的、允许为null、去重(对象去重的时候:要重写equals()/hashCode()方法)、非线程安全、
| |----- LinkedHashSet 特点:链表形式存储、允许为null、去重、插入元素有序、非线程安全、性能较高。
| |----- SortedSet
| |--- NavigableSet
| |--- TreeSet * 特点:排序(对象排序两种方法:1) 实现Comparable接口、重写它的compareTo方法;
| 2) 实现Comparator接口、重写它的compare方法)、默认的是升序、
双值(映射关系):
Map(双值的超级接口)
|
|------HashMap * 特点:无序存放、键值对的存在出现、允许Key为null、Key值去重(覆盖)、value可以重复、效率高、非线程安全、通常是根据Key得到value、JDK1.2推出
|
|------Hashtable 特点:无序存放、键值对的存在出现、不能为null、Key值去重(覆盖)、value可以重复、效率低、线程安全的、jdk1.0退出、属于保留类
|
|--------SortedMap
| |-----NavigableMap
| |--- TreeMap * 特点:排序、类似于TreeSet与他不同、按照Key来进行排序。对象排序两种方法:
| 1) 实现Comparable接口、重写它的compareTo方法;
| 2) 实现Comparator接口、重写它的compare方法)、默认的是升序。
遍历(循环取出)方式:
List -> 普通的for循环、迭代器、foreach
Set -> Iterator迭代器、foreach
Map -> Iterator迭代器(也是结合entrySet使用)、entrySet、keySet、values(只能取到value值),前4种循环方式都是结合foreach来使用;
解决常用集合的非线程安全方法:
java.util.Collections 中的
List -> synchronizedList(List<T> list)
Map -> synchronizedMap(Map<T> map)
Set -> synchronizedSet(Set<T> set)
什么是工具类: 就是提供开发者便利操作的一个类的集合。换句话说:就是提供方便的