IO流
File 类
- 创建类
集合相关
Collection
该类及以下几种子类的基本功能就是存储不确定数量的数据
Set
该类及其子类的特点有:存储的数据是无序的(指存入集合的先后顺序)、存储的数据不重复。
HashSet
HashSet是不同步的,非线程安全,集合元素值可以为null(null也可以计算哈希值)
在放入对象时,如果重写了equals方法则也应该重写hashCode方法,这样可以保证hashSet中只有一个相同的对象。(因为equals相同但hashCode不同时,hashSet仍然可以保存这两个对象,但这不符合Set的规则)
LinkedHashSet
保存的方式与HashSet一致,但多维护了一个链表来提供添加值的顺序。
遍历时更快
TreeSet
保存在TreeSet中的元素,如果是某个类的对象,那么该类一定实现了Comparable接口的compareTo方法。
添加第一个元素的时候不会检查上述约束。
TreeSet保存元素时基于红黑树结构
EnumSet
专门用来保存枚举类元素的集合,其中所有元素都是指定枚举类的枚举值
使用noneOf()可以创建一个指定枚举类的空Set
Queue
PriorityQueue
队列的实现类之一,实现基本的先进先出功能
ArrayDeque
双端队列的实现,可以从头或尾访问该队列,因此也可作为栈的实现。
List
ArrayList
非线程安全
Vector
少用
LinkedList
非线程安全的,内部是以链表的方式存储数据,与上述两个List的实现都不一样(数组)。
它可以作为队列和栈的实现来使用,因为也实现了Deque的双端接口
Map
该类的基本功能就是存储键值对的数据
HashMap
与HashSet一样的是需要保证equals方法和hashCode方法在输出的结果上保持一致
线程不安全的实现
Hashtable
古老的java字典类实现,现在不怎么使用,线程安全所以性能较差
LinkedHashMap
实现了一个双端链表,可以记住键值对添加的顺序,遍历时会提高性能,但随机访问时性能就相对差一些。
TreeMap
使用红黑树结构存储键值对,会对键的值进行排序,需要维护equals方法和compareTo方法。相等时compareTo方法需要输出0
需要注意的是,如果要保持java定义的自然排序,需要保证所有key的对象实现了Comparable接口。
如果是定义排序的话则需要传入一个Comparator对象。
WeakHashMap
与HashMap不一样的是其对key对象的引用是弱引用,表示存入字典的对象若很久没有使用则会被GC回收
EnumMap
针对枚举类设计的Map实现类,其在声名对象时需要给定枚举类,并且其key值只能是枚举类的枚举值。
Collections工具类
Collections类中提供了针对 List、Set、Queue和Map的多种操作,都是静态方法。
例如:
Unmodifiable*
Synchronized*
Checked*
Empty*
Singleton*
sort
binarySearch
shuffle
swap
min
max
等等方法