课程回顾:
集合:动态存储多个对象
长度可变,存储同一种类型的对象
1、Collection<E>:
1、List<E>:重复且有序
常用方法:
add
get
set
indexOf
contains
remove
size
clear
iterator
1、ArrayList<E>:数组
2、LinkedList<E>:双链式
offer
peek
poll
pop
push
2、Set<E>:不重复且无序
2、Map<K,V>
今日内容:
Set<E>:无序且不重复
1、HashSet<E>: 底层实现:哈希散列存储,其实就是根据哈希值按照固定的算法计算位置
新增元素时,首先会调用对象的hashCode方法获取哈希值
与集合中其他元素的哈希值进行比较,如果哈希值相同会调用equals方法,
若返回true,说明相同,则添加失败
若返回false则添加成功,如果哈希值不同则直接添加
一般而言:我们使用HashSet存储自定义类时,需要对类重写hashCode和equals方法
public int hashCode() {}
public boolean equals(Object obj) {}
常用方法:
add:添加元素
size:获取元素个数
contains:是否包含
remove:移除
iterator:迭代器对象
2、LinkedHashSet:HashSet的子类,底层实现:双链式+哈希散列存储
特点:不可重复且有序
只是保证了添加顺序
3、TreeSet<E>:底层实现:红黑二叉树
要求元素必须可排序的
注意:TressSet存储自定义类时,要求对应的类要么实现自然顺序,要么自定义比较器
就是说:元素必须可排序,否则报异常
常用方法:
add:添加元素
size:获取元素个数
ceiling:获取大于等于指定值的最小元素
floor:获取小于等于指定值的最大元素
higher:获取大于指定值的最小元素
lower:获取小于指定值的最大元素
first:获取第一个元素
last:获取最后一个元素
pollFirst:获取并移除第一个元素
pollLast:获取并移除最后一个元素
java中的比较器接口:
1、Comparable:自然顺序---对应的是TreeSet无参构造
compareTo:实现排序的方法,返回数据:0表示元素相同,正数表示大于,负数表示小于
2、Comparator:自定义比较器----对应的TreeSet(Comparator)
compare:实现排序的方法
Collections:集合工具类
常用方法:
sort:排序,要求元素可排序(自然顺序或自定义比较器)
shuffle:随机进行交换
数组和集合的相互转换
Arrays.asList:数组--->集合
toArray:集合----->数组
匿名内部类格式:new 类名或接口名(){
重写的方法
};
下周内容:
Map:HashMap,TreeMap
File
I/O流
字节和字符
文件流
缓冲流
转换流
对象流
内存流
数据流
打印流
随机读取文件类
线程