一 回顾
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. 斗地主案例
六、file
6.1简介
1.文件和目录路径名的抽象表示形式==>可以把文件或者文件的路径构成一个File 可以使用其方法
2.路劲: 绝对路劲 与相对路径
3.绝对路劲:从根盘符开始的路径就是绝对路劲 例子:D:\day02\src\Test01.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.txtfile1.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() | 判断是否是文件 |
6.7 重命名与剪切
方法的名称 | 方法的描述 |
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:\a\b\c\d.txt
d:\a\b\c\d.txt
d.txt
d:\a\b\c
0
File f1 = new File("d:\\a\\b\\c"); System.out.println(f1.getName());c
6.9 过滤性
代码-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 简介
1.递 传递 归 归还 归一 在开发中递归就是方法自己调用自己 朝着不递归的方法去发展 将大小的范围逐渐变为小的范围
2.递归: 方法自己调用自己
3.注意点: A.递归是朝着不递归的方向发展 方法参数会逐渐变小 B.递归容易产生栈内存溢出
7.2 数学中的递归
从大到小递归
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 分析
A.递归中方法的参数 文件对象File
B.istFile() 获取当前目录下所有文件以及目录
C.使用循环遍历数组 判断是目录 继续递归 不是目录 删除 delete()
7.5 案例
step01
在控制台下打印c盘中所有的图片 使用递归的方式step02 分析
1.使用递归进行操作
2.是目录的时候需要递归
3.过滤出所有的图片 判断其后缀名
step03 代码