集合:
单列集合:
Collection:单列集合的根接口
List:实现了List接口的集合类,具备的特点:有序、可重复
ArrayList:ArrayList底层是使用Object数组实现的.特点:查询速度快,增删慢.
LinkedList:LinkedList底层是使用了链表结构实现的.特点是:查询速度慢,增删快.
Vector:底层是使用Object类型的数组实现的,实现原理和ArrayList是一致的,但其是线程安全的,操作效率低.
Set:实现了Set接口的集合类,具备的特点:无序,不可重复.
HashSet:底层是使用哈希表实现的,特点:存取速度快
HashSet存储元素的原理:
往HashSet添加元素的时候,首先会调用元素的hashCode方法来得到元素的哈希码值,然后将哈希值经过运算算出该元素在哈希表中的位置.
情况一:如果算出的位置还没有存在的元素,那么该元素可以直接添加到哈希表中.
情况二:如果算出的位置目前已经存在其他的元素,那么还会调用元素的equsals方法再与这个位置上的元素比较一次.
TreeSet:底层是使用二叉树(红黑树)的数据结构实现的.特点:对集合中的元素进行排序存储.
TreeSet的原理:
1. 往TreeSet添加元素的时候,如果元素具备自然排序的特点,那么TreeSet会根据元素的自然特性进行排序存储.
2. --------------------------------------,如果元素不具备自然排序的特点,那么元素所属的类就必须实现Compareable接口,将比较的方法放在Compareto方法
3. --------------------------------------------------------------------------------------,元素所属的类也没有实现Compareable接口,那么在创建TreeSet的时候必须要传入比较器对象
比较器的语法:
Class 类名 implements Comparator{
}
双列集合:Map: 存储的对象都是以键对值的形式存在的,键不可以重复,值可以重复
HashMap:线程不安全,存取速度快.底层是以哈希表实现的.
TreeMap: 红-黑树的数据结构,默认对元素进行自然排序(String),如果在比较的时候两个对象返回值为0,那么元素重复.
HashTable:底层也是以哈希表维护的,存取的速度快,存储元素是无需的.
集合的遍历方式:
List:使用get方式遍历
Map:迭代器方式遍历(使用foreach替代)
使用entrySet方式.
泛型的好处:
1. 把运行时出现的问题提前到了编译时.
2. 避免了无谓的强制类型转换.
3. 注意:在泛型中没有多态的概念,两边的类型必须一致.
IO流:
解决设备与设备之间的数据传输问题.
分类:
|
输入流 |
输出流 |
说明 |
字节流 |
InputStream |
OutputStream |
字节流是处理字节的(二进制) |
字符流 |
Reader |
Writer |
字符流是处理字符的 |
注:这几个类都是抽象类.