Java▲在被疯狂嘲讽之后,我决定研究下Java中的过滤器源码

文章图片

文章图片

文章图片
今天是我自学Java的第40天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:
昨天学习了过滤器 , 它的作用在于能够过滤出满足一定条件的文件 。 跟着依样画葫芦 , 我自己也写了一个过滤器 。
正当我满以为自己对面向接口编程这一思想掌握的还算不错时 , 却被不停地嘲讽 。
仔细想了想觉得他们说的也还蛮有道理的 , 自己确实还很菜 , 不能坐井观天 , 要有敬畏之心 。
所以我决定撸下文件过滤器的源码 , 我确实写的菜 , 但Java里的源码是Java开发者几十年来智慧的结晶 , 总不能说它菜了吧?
对于我这样的Java萌新来说 , 看源码确实是一件比较吃力的事情 , 这也是自己一直比较恐惧的事情 。
但人在嘲笑中变强 , 所以我想试一试 。
注意:
- Javaweb过滤器还没学到 , 暂时不清楚 。
- 迭代我也不懂 , 暂时只会递归 。
①接口FileFilter
File文件 , Filter过滤器 , 顾名思义 , 这就是专门用来解决文件过滤问题的接口 。
②方法accept
参数:File对象;返回值:布尔值 。
- 如果返回值为真 , 就将file保存下来;
- 如果返回值为假 , 就将file不保存 。
该接口只有一个方法 , 也就是说其为函数式接口 , 所以可以使用lambda表达式 。
二、JDK中过滤器的封装JDK将过滤器封装在listFiles方法中了 。
listFiles方法有几个重载方法:
- listFiles():遍历文件夹中的子文件或者子文件夹 。
- listFiles(FileFilter filter):按照过滤条件遍历文件夹中对应的子文件或者子文件夹 。
我们来一步一步地分析:
①listFiles(FileFilter filter)
参数:FileFilter接口 , 那么我们若是要调用这个方法 , 必须要传入FileFilter接口的实现类对象(使用匿名内部类或者lambda表达式) 。
返回值:一个文件数组 。
②String ss[
=list()
这个是啥呢?这里省略了一个this关键字 。
也就是this.list() , File类有一个list方法 , 也是用来文件夹的遍历 , 给一个文件对象 , 返回一个字符串数组 。
file对象在调用listFiles方法时 , 其底层也会调用一次list方法 , 如果字符串数组为空 , 那么直接返回空 。
③ArrayList<File> files = new ArrayList<>();
创建一个ArrayList集合files , 泛型为File , 也就是说files这个集合只能用来存储File对象 。
④for(String s::ss){;
增强for循环遍历ss , 遍历出来的也就是子文件或者子文件夹对应字符串名字 。
⑤File f = new File(s this);
这是新创建了一个file对象 , 相当于遍历出来的子文件或者子文件夹 。
推荐阅读
- 程序员■Java程序员必知:HashMap进行put操作会不会引起死循
- 璐璐闲谈|疯狂的孙正义
- 新财富杂志|疯狂孙正义:向天再借260年
- 课工场郑州翔天信鸽|JavaScript最常用,java是主流,JetBrains公布编程语言排名
- 猿灯塔|POI Excel,Java架构-Apache
- 【Java】github上标星70.5k,贼火的Java突击手册,全面详细对标阿里P7
- 「编程」后台编程语言互相争执,为何前端公认JavaScript?
- 腾讯@JAVA如何连接数据库
- 【陨石】末日来临?霍金预言或许正在被印证,日本东京一颗火球闪耀高空
- 【红米手机】手机太便宜还有错?红米K30 Pro疯狂降价,被中消协抓了个正着
