六、file 6.1简介1.HashMap集合
特点:
A.数据结构也是Hash表结构
B.多线程中是不安全
C.默认的数组的初始化容量是16
2.HashMap与HashSet的比较
相同点:都是hash表结构来存储
不同点:
A.HashSet的底层就是使用HashMap来实现
B.HashSet的数据结构针对与是元素 HashMap的数据结构针对于键3.linkedHashMap
A.Map 接口的哈希表和链接列表实现,
B.具有可预知的迭代顺序
C.此实现不是同步的 多线程中不安全的
4.泛型:
泛型使用场景:在定义集合的时候 不确定其数据类型的时候 就可以使用泛型 泛型就是一个特殊的变量 变量用于接收器数据类型
5.使用泛型
List<数据类型> 对象名 = new ArrayList<数据类型>();
注意点;
A.前后的泛型必须是一致的
B.在jdk1.7之后出现了菱形的泛型 后面的泛型可以省略
C.泛型只能是引用数据类型 不能是基本数据类型
6.定义泛型类:
语法:
访问修饰符 class 类名<泛型> {
所有的成员都可以使用其数据类型
}
7.定义泛型的方法:
语法:
访问修饰师 <泛型>返回值类型 方法的名称(参数列表) {
方法体
return 返回值
}
注意点:
A.普通的成员方法是可以使用类的泛型
B.静态方法是不可以使用类的泛型
8.定义泛型的接口
A.实现类确定其泛型
B.实现类不确定其泛型
9.泛型的通配符 ? 一般作为方法的参数
extends E> ==> E本身或者是其子类
super E> ==>E本身或者是其父类
10.map集合嵌套遍历11. 斗地主案例
1.文件和目录路径名的抽象表示形式==>可以把文件或者文件的路径构成一个File 可以使用其方法
2.路劲: 绝对路劲 与相对路径
3.绝对路劲:从根盘符开始的路径就是绝对路劲 例子:D:day02srcTest01.java
4.相对路径:相对于具体参照物的路径 在idea中基本都是使用的相对路径
相对路径
6.2 File的构造方法| 构造方法的名称 | 构造方法的描述 |
| public File(File parent, Stringchild) | 根据 parent 抽象路径名和 child 路径名字符串创建一个新File 实例 |
| public File(String pathname) | 通过将给定路径名字符串转换为抽象路径名来创建一个新File 实例 |
| public File(String parent, Stringchild) | 根据 parent 路径名字符串和 child 路径名字符串创建一个新File 实例 |
代码
public class Test01 {
public static void main(String[] args) throws IOException {
File f = new File(new File("c:\admin"), "1.txt");
File f1 = new File("c:\admin","2.txt");
File f2 = new File("c:\admin\ad\3.txt");
}
}
6.3 创建的方法
| 方法的名称 | 方法的描述 |
| public boolean createNewFile() | 创建文件 |
| public boolean mkdir() | 创建文件夹(只能创建一级目录) |
| public boolean mkdirs() | 创建文件夹(创建多级目录) |
//一般要有目录才能创建文件
//文件和目录不能同时创建
//1.可以先创建目录,再创建文件
代码
public static void main(String[] args) throws IOException {
//一般要有目录才能创建文件
//文件和目录不能同时创建
//1.可以先创建目录,再创建文件
//File file = new File("d:\admin\a");
//这是创建一级目录,如果填写的有多级目录,则默认创建失败
File file = new File("d:\admin");
file.mkdir();
//已经有admin的可以
File file1 = new File("d:\admin\a\b");
file1.mkdirs();
}
6.4 删除文件或者文件夹
| 方法的名称 | 方法 的描述 |
| public boolean delete() | 删除文件以及空的文件夹(不能是多级目录) |
注意点:使用delete的文件或者是空文件夹 是不会进回收站
//删除文件
File file1 = new File("d:\admin\a\b\1.txt");
//删除1.txt
file1.delete();
//删除空的文件夹
File file2= new File("d:\admin\a\b");
//删除b文件夹
file2.delete();
File file3= new File("d:\admin");
//删除多级空文件夹,里面有文件则执行失败
file3.delete();
6.5 案例
step01 需求
step02 分析
1.创建多级目录的文件夹 mkdirs()
2.创建文件 createNewFile()
//一般要有目录才能创建文件
//文件和目录不能同时创建
//1.可以先创建目录,再创建文件
//File file = new File("d:\admin\a");
//这是创建一级目录,如果填写的有多级目录,则默认创建失败
File file = new File("d:\admin");
file.mkdir();
//已经有admin的可以
File file1 = new File("d:\admin\a\b");
file1.mkdirs();
6.6 判断性
| 方法的名称 | 方法的描述 |
| public boolean exists() | 测试此抽象路径名表示的文件或目录是否存在 |
| public boolean isDirectory() | 测试此抽象路径名表示的文件是否是一个目录 |
| public boolean isFile() | 判断是否是文件 |
| 方法的名称 | 方法的描述 |
| public boolean renameTo(Filedest) | 重命名(在同一个目录下重命名)或者是剪切(在不同的目录执行的是剪切原来的目录不会再有) |
//先要file的文件存在
File file1 = new File("d:\a\b\c\d.txt");
File file2 = new File("d:\a\b\c\d.pdf");
file1.renameTo(file2);
6.8 得到性的方法
File f1 = new File("d:\a\b\c\d.txt");
String absolutePath = f1.getAbsolutePath();
System.out.println(absolutePath);
System.out.println(f1.getPath());
System.out.println(f1.getName());
System.out.println(f1.getParent());
System.out.println(f1.length());
d:abcd.txt
d:abcd.txt
d.txt
d:abc
0
6.9 过滤性File f1 = new File("d:\a\b\c"); System.out.println(f1.getName());c
代码-01
public static void main(String[] args) {
//File f1 = new File("d:\a\b\c");
File file = new File("D:\admin");
String[] list = file.list();
for (String s : list) {
System.out.println(s);
}
}
a
代码-03
6.9.1 案例step01 需求
step03 代码
7.递归 7.1 简介7.2 数学中的递归1.递 传递 归 归还 归一 在开发中递归就是方法自己调用自己 朝着不递归的方法去发展 将大小的范围逐渐变为小的范围
2.递归: 方法自己调用自己
3.注意点: A.递归是朝着不递归的方向发展 方法参数会逐渐变小 B.递归容易产生栈内存溢出
从大到小递归
public static void main(String[] args) {
}
public static int showNum(int num){
if (num<1){
return -1;
}else if (num==1){
return 1;
}else {
return num*showNum(num-1);
}
}
从小到大递归
public static void main(String[] args) {
System.out.println(showNum(10));
}
public static int showNum(int num){
if (num==1){
return 1;
}else if (num==2){
return 1;
}else {
return showNum(num-1)+showNum(num-2);
}
}
7.3 递归的内存图
7.4 案例
step01 需求:删除一个文件夹下面的所有的文件 包括自身 采用递归的方式
step02 分析
7.5 案例A.递归中方法的参数 文件对象File
B.istFile() 获取当前目录下所有文件以及目录
C.使用循环遍历数组 判断是目录 继续递归 不是目录 删除 delete()
step01
在控制台下打印c盘中所有的图片 使用递归的方式step02 分析
1.使用递归进行操作
2.是目录的时候需要递归
3.过滤出所有的图片 判断其后缀名
step03 代码



