四、集合
单列集合
Collection
List -- 元素有序(存取顺序),可重复,有索引
ArrayList
数组,查询快,增删慢
线程不安全,效率高
LinkedList
链表,查询慢,增删快
线程不安全,效率高
Vector
数组,查询快,增删慢
线程安全,效率低
Set -- 元素无序(存取顺序),唯一,无索引
HashSet
保证元素唯一,依赖对象所属类的hashCode() 和 equals()
LinkedHashSet -- 保证元素唯一,又有序
TreeSet
保证元素唯一,实现排序:
自然顺序 -- 让元素所属类去实现Comparable接口,重写compareTo()方法
比较器顺序 -- 在TreeSet的构造方法内传递Comparator接口的子类对象。
如果两种排序方式都有,以比较器优先。
练习:
1、去除ArrayList集合中的重复
2、将ArrayList集合中的含有数字的字符串元素全部删除 -- String regex = ".*\\d.*";
3、对ArrayList<User>中的对象按照年龄从大到小排序
4、编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
双列集合
Map
HashMap
TreeMap
重点:Map的两种遍历方式
通过键找值
通过键值对映射关系对象找键和值
练习:
查找字符串中每个字符出现的次数(两种遍历方式都练习)
五、IO流
异常
Throwable
Error
Exception
RuntimeException
非RuntimeException
Error和RuntimeException,这些是需要改代码的。
RuntimeException也可以去做异常处理,但如果出现这样的异常,一般还是程序出了问题。
非RuntimeException 必须做异常处理:
1、声明异常 -- throws 异常类名
2、捕获异常 -- try...catch
File类
复制文件夹下所有指定后缀(.java)的文件到另外的目录去,并将这些文件改名为.txt后缀
字节流
InputStream
OutputStream
// 创建输入流对象读取文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("董小姐.mp3"));
// 创建输出流对象写入文件
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("董大婶.mp3"));
// 读写操作
byte[] bys = new byte[8192];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
// 释放资源
bis.close();
bos.close();
字符流 -- 只能操作文本文档
Reader
Writer
打印流:
PrintStream
println() -- 自动换行
PrintWriter
还可以自动刷新:但必须开启,且调用指定的方法println()
|
|