2021.01.31 第一阶段 16

1.TreeSet
2.递归
3.File类型(io)

一、TreeSet

(一)基本用法
1、TreeSet集合是Set接口的实现类,该集合支持排序,底层是红黑树,默认支持按照自然顺序排序。
2、TreeSet集合因为是Set接口的实现类,所以也可以对元素进行去重,并且默认按照自然顺序排列数据
3、注意事项:TreeSet中,只能添加一种类型的元素,不能添加来源于不同类型的元素。
3、如果我们在TreeSer中添加了来自不同类型的元素,会出现ClassCastException类型转换异常。因为混合元类型的元素,TreeSet并不知道怎么排序
(二)TreeSet集合储存自定义类型的元素和比较器(自然排序)
1、TreeSet集合能够对JDK提供类型的元素进行排序,但是不能对自定义类型的元素进行排序,会直接报错,如果想要对自定义类型的元素进行排序,需要让元素所属类型实现Comparable接口,才能排序。
2、compareTo方法,将调用者和参数对象进行自然排序
(1)调用者小于参数,返回负数
(2)调用者等于参数,返回0
(3)调用者大于参数,返回正数
(三)Comparator接口(定制排序)
1、TreeSet集合能够对元素进行自然排序,实现Comaprable接口,可以让元素进行排序。我们有时候需要让容器具有排序的功能,因此,使用Comparator接口,进行定制排序
2、实现步骤:
(1)使用一个类型实现Comparator接口,作为比较器的实现类对象,在比较器实现类对象中定义排序规则
(2)创建比较器对象,将其作为参数传递给TreeSet集合,让TreeSet集合具有排序功能

二、递归

(一)概述
1、递:传递、逐渐的、一个接一个;归:回去,回到简单原始的状态
2、一种从大到小,从复杂到简单的传递过程
3、递归:方法自己调用自己,解决的是一个比较复杂的问题,复杂的问题基于简单的问题已经解决的基础上,经过非常少的步骤,就可以解决这个复杂的问题。方法在自己调用自己的过程中,调用的逻辑总体不变,但是解决的问题的规模越来越小(调用者的规模越来越小,参数的规模越来越小),一直小到不需要递归的方式,也能容易解决这个问题为止,就不需要再递归调用该方法了。
4、递归代码的特点:
(1)自己调用自己:总体逻辑不变,但是规模在缩小;由于自己调用自己,所以功能都要单独的定义成一个方法
(2)代码会有两个分支:自己调用自己的分支,规模还比较大的时候,无法直接简单解决的时候;不需要自己调用自己的分支,规模已经简单到不需要自己调用自己,而使用一个很简单的操作就可以完成
5、图示:

在这里插入图片描述

三、File

(一)File概述
1、File类型的对象,可以表示一个文件或者文件夹的路径
2、路径:用于描述文件或者文件夹所在位置的字符串
3、路径的分类:
(1)绝对路径:
① 在Windows系统中:从盘符开始的路径就是绝对路径。例如:E:\Java\jdk1.8.0_202\bin
② 在Linux系统中,从【\】开始的路径就是绝对路径
(2)相对路径:相对于某个路径而言
【在Eclipse中,相对路径是相对于当前工程而言】
(二)File类型的构造方法
1、File(String pathname) 将String类型表示的路径,封装为一个File对象
2、File(String parent, String child) 创建一个File对象,其封装的路径是第一个参数和第二个参数拼接
成的一个完整的路径
3、File(File parent, String child) 创建一个File对象,其封装的路径是第一个参数表示的路径和第二个
参数拼接成的一个完整的路径
(三)File类型的创建方法
1、createNewFile() 当File对象封装的路径所表示的文件不存在时,会创建一个路径表示的空的文
件,当文件存在,则创建失败
2、**mkdir() (make directory)**当File对象封装的路径所表示的文件夹不存在时,会创建一个路径表
示的空的文件夹,当文件夹存在时,则创建失败。注意事项:此方法用于创建单个目录,如果创建的某
个目录它的父级目录不存在时,则要创建的这个目录也创建失败
3、mkdirs() 可以用于创建嵌套目录
(四)File类型的删除方法
1、delete() 用于删除File对象封装路径所指代的文件或者文件夹
2、注意事项:
(1)delete()方法不能删除非空文件夹
(2)delete()方法删除的内容不走回收站
(五)File类型的重命名方法
1、renameTo(File dest) 调用者表示当前要修改名字的文件或者文件夹,参数对象表示要改成的名字
2、注意事项:
(1)调用者的路径和参数的路径在同路径下,调用该方法,是重命名
(2)调用者的路径和参数的路径在不同路径下,调用该方法,是剪切重命名
(六)File类型的判断功能
1、exists() 测试此抽象路径名表示的文件或目录是否存在
2、isFile() 测试File对象路径表示的内容,是否为一个文件,这个文件真的存在,则返回true
3、isDirectory() 测试File对象路径表示的内容,是否为一个文件夹,这个文件夹真的存在,则返回true
(八)File类型的获取功能
1、getAbsolutePath() 返回File对象所表示内容的绝对路径
2、**getPath()**获取File对象中封装的路径名字符串
3、getName() 获取File对象表示路径中文件或者文件夹的名字
4、length() 获取文件的字节个数,如果获取文件夹则结果不确定。我们如果要想获取一个文件夹的大小,实际上要做的操作是:获取到文件夹下每一个文件的大小,累加,最终的和就是文件夹的大小
5、list() 获取一个文件夹下所有文件或者文件夹的名字存储到一个String[]中
6、File[]【listFiles()】 将一个文件夹下的每一个内容(包括文件和文件夹)都封装为一个独立的File对象,并且将这些File对象装入一个File[]中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值