Java35-85

news2024/9/21 16:30:50

这里写目录标题

  • steam流
    • collect超详解
  • 方法引用
    • 静态方法中没有this!!!
    • 引用本类或者父类的成员方法
  • 引用构造方法
  • 引用方法成员
    • 引用数组的构造方法
    • 转成自定义对象
      • 获取部分属性并收集到数组
  • 异常
  • 异常中的常见方法
  • 抛出 处理
  • 自定义异常
  • File的概述和构造方法
    • 创建、删除
    • 获取并遍历
    • findAVI(file)参数一定要是src的次一级路径
    • delete只能删除文件或者一个空文件夹
  • 统计文件夹大小
  • IO流
  • 字节输出流写数据
  • 换行写和续写
    • 字节输入流的基本用法
    • 字节输入流循环读取
    • 文件的拷贝
      • 弊端和解决方案

steam流

ArrayList<String> list1 = new ArrayList<>();
1ist1.add("张无忌");
1ist1.add("周芷若";
1ist1.add("赵敏");
1ist1.add("张强";
1ist1.add("张三丰");
list1.stream().filter(name->name.startswith("张")).filter(name -> name.length() == 3).forEach(name-> System.out.println(name));

在这里插入图片描述
在这里插入图片描述
distinct
元素去重,依赖(hashCode和equals方法)
合并a和b两个流为一个流
concat
注意1:中间方法,返回新的stream流,原来的stream流只能使用一次,建议使用链式编程
注意2:修改stream流中的数据,不会影响原来集合或者数组中的数据
在这里插入图片描述

collect超详解

*参数一:
Function泛型一:表示流中每一个数据的类型
*
泛型二:表示Map集合中键的数据类型
*
*
方法apply形参:依次表示流里面的每一个数据
*
方法体:生成键的代码
*
返回值:已经生成的键
*
*
参数二:
Function泛型一:表示流中每一个数据的类型
泛型二:表示Map集合中值的数据类型
*
方法apply形参:依次表示流里面的每一个数据
方法体:生成键的代码
返回值:已经生成的键
**/
.collect(Collectors.toMap(new Function<String, String>() {
@Override
public String apply(String s){
return null;
}
},
new Function<String, Integer>() {
@Override
public Integer apply(String s){
returh null;
}
}));

收集流中的数据,放到集合中(List Set Map)
collect(Collector collector)
注意点:
如果我们要收集到Map集合当中,键不能重复,否则会报错

方法引用

在这里插入图片描述
方法引用
1.引用处需要是函数式接口
2.被引用的方法需要已经存在
3.被引用方法的形参和返回值需要跟抽象方法的形参和返回值保持一致
4.被引用方法的功能需要满足当前的要求

引用静态方法
格式:类名::静态方法
范例:Integer::parseInt

静态方法中没有this!!!

引用本类或者父类的成员方法

在这里插入图片描述

引用构造方法

在这里插入图片描述
目的:为了创建对象

引用方法成员

方法引用的规则:
1.需要有函数式接口
2.被引用的方法必须已经存在
3.被引用方法的形参,需要跟抽象方法的第二个形参到最后一个形参保持一致,返回值需要保持一致。
4.被引用方法的功能需要满足当前的需求
抽象方法形参的详解:
第一个参数:表示被引用方法的调用者,决定了可以引用哪些类中的方法
在stream流当中,第一个参数一般都表示流里面的每一个数据。
假设流里面的数据是字符串,那么使用这种方式进行方法引用,只能引用string这个类中的方法
第二个参数到最后一个参数:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法

方法引用(引用成员方法)
格式
其他类:其他类对象::方法名
本类:this::方法名(引用处不能是静态方法)
父类:super::方法名(引用处不能是静态方法)

引用数组的构造方法

格式:数据类型[]::new
范例:int[]::new
细节:数组的类型,需要跟流中数据的类型保持一致。

目的:
创建一个指定类型的数组
需求:
集合中存储一些整数,收集到数组当中
细节:
数组的类型,需要跟流中数据的类型保持一致。
*1
//1.创建集合并添加元素
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, ...elements: 1, 2, 3, 4, 5);
//2.收集到数组当中
Integer[] arr2 = list.stream().toArray(Integer[]::new);
System.out.println(Arrays.toString(arr2));
/*Integer[] arr = list.stream().toArray(ne IntFunction<Integer[]>() {
@0verride
public Integer[] apply(int value){
return new Integer[value];
});*/

转成自定义对象

//1.创建集合并添加元素
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,.."张无忌,15","周芷若,14","赵敏,13","张强,20","张三丰,100""张翠山,40")
//2.先把字符串变成Student对象,然后再把Student对象收集起来
Student[] arr = list.stream().map(Student::new).toArray(Student[]::new);
//打印数组
System.out.println(Arrays.tostring(arr));

获取部分属性并收集到数组

//1.创建集合
ArrayList<Student> list = new ArrayList<>();
//2.添加元素
list.add(new Student(  "zhangsan",  23));
list.add(new Student(  "lisi",  24));
list.add(new Student(  "wangwu", 25));
//3.获取姓名并放到数组当中
String[] arr = list.stream().map(Student: :getName).toArray(String[]: :new);
/* String[] arr = list.stream().map(new Function<Student, String>() {
@0verride
public String apply(Student student) {
return student.getName();
3
}).toArray(String[]::new);*/
System.out.println(Arrays.toString(arr));

异常

1.error:硬件类的问题
2.Exception:叫做异常,代表程序可能出现的问题。
我们通常会用Exception以及他的子类来封装程序出现的问题。
运行时异常:RuntimeException及其子类,|编译阶段不会出现异常提醒。
运行时出现的异常(如:数组索引越界异常)

1)编译时异常:没有继承RuntimeExcpetion的异常,直接继承于Excpetion。
编译阶段就会错误提示
2)运行时异常:RuntimeException本身和子类。
编译阶段没有错误提示,运行时出现的

/*
自己处理(捕获异常)
格式:
try {
可能出现异常的代码;
}catch(异常类名变量名){
异常的处理代码;
}
*/


int[] arr = {1, 2, 3, 4, 5, 6};
try{
/可能出现异常的代码;
System.out.println(arr[10]);//此处出现了异常,程序就会在这里创建一个ArrayIndexOutOfBoundsException对象
//new ArrayIndexOutOfBoundsException();
/∥拿着这个对象到catch的小括号中对比,看括号中的变量是否可以接收这个对象
//如果能被收,就表示该异常就被捕获(抓住),执行catch里面对应的代码
//当catch里面所有的代码执行完毕,继续执行try...catch体系下面的其他代码
}catch(ArrayIndexOutOfBoundsException e){
//如果出现了ArrayIndexOutOfBoundsException异常,我该如何处理
System.out.println("索引越界了");
}
System.out.println("看看我执行了吗?");

细节:
如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面

在这里插入图片描述

异常中的常见方法

在这里插入图片描述

抛出 处理

在这里插入图片描述

自定义异常

1.定义异常类
2.写继承关系
3.空参构造
4.带参构造

运行时:RuntimeException核心就表示由于参数错误而导致的问题
‘编译时:Exception 核心提醒程序员检查本地信息

注:如果是编译时期的异常,就一定要加throws
捕获异常printStackTrace()

catch (NumberFormatException e){
e.printStackTrace();

File的概述和构造方法

在这里插入图片描述
创建文件对象(拼接)

//父级路径:C:\Users\alienware\Desktop
//子级路径:a.txt
String parent = "C:\\Users\\alienware\\Desktop";
String child = "a.txt";
File f2 = new File(parent,child);
//C: \Users\alienware\Desktop\a.txt

在这里插入图片描述
在这里插入图片描述
细节:
length方法只能返回文件的大小,单位是字节
在这里插入图片描述

创建、删除

1.createNewFile 创建一个新的空的文件
细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
如果当前路径表示的文件是存在的,则创建失败,方法返回false
细节2:如果父级路径是不存在的,那么方法会有异常IOException
细节3:createNewFtle方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件

2.mkdir make Directory,文件夹(目录)
细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。

File f2 = new File("D:\\aaa\\aaa\\bbb\\ccc");
boolean b = f2.mkdir();
System.out.println(b);*/

3.mkdirs 创建多级文件夹
/细节:既可以创建单级的,又可以创建多级的文件夹

public boolean delete()
删除文件、空文件夹
细节:
如果删除的是文件,则直接删除,不走回收站。
如果删除的是空文件夹,则直接删除,不走回收站
如果删除的是有内容的文件夹,则删除失败

获取并遍历

在这里插入图片描述

当调用者File表示的路径不存在时,返回null
当调用者File表示的路径是文件时,返回null
当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当调用者File表示的路径是需要权限才能访问的文件夹时,返回null在这里插入图片描述

findAVI(file)参数一定要是src的次一级路径

delete只能删除文件或者一个空文件夹

如果要删除,要先删除里面的所有的文件或者文件夹,然后在删除自己(采用递归)

public static void delete(File src){
//1.先删除文件夹里面所有的内容
//进入src
File[] files = src.listFiles();
∥遍历
for (File file : files) {
//判断,如果是文件,删除
if(file.isFile()){
file.delete();
}else {
//判断,如果是文件夹,就递归
delete(file);
}
}
//2.再删除自己
src.delete();
}

统计文件夹大小

1.定义变量进行累加
2.进入src文件夹
3.遍历数组
4.判断
把当前文件的大小累加到len当中
判断,如果是文件夹就递归

IO流

用于读写文件中的数据(可以读写文件,或网络中的数据
在这里插入图片描述
在这里插入图片描述
写出数据:write()
释放数据:close()

字节输出流的细节:
1.创建字节输出流对象
细节1:参数是字符串表示的路径或者是File对象都是可以的
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。
细节3:如果文件已经存在,则会清空文件
2.写数据
细节:write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符
3.释放资源
细节:每次使用完流之后都要释放资源

字节输出流写数据

在这里插入图片描述

换行写和续写

换行写:
再次写出一个换行符就可以了
windows: \r\n
Linux:\n
Mac:\r
细节:
在windows操作系统当中,java对回车换行进行了优化。
虽然完整的是\r\n,但是我们写其中一个\r或者\n,
java也可以实现换行,因为java在底层会补全。
建议:
不要省略,还是写全了。

续写:
如果想要续写,打开续写开关即可
开关位置:创建对象的第二个参数
默认false:表示关闭续写,此时创建对象会清空文件
手动传递true:表示打开续写,此时创建对象不会清空文件
在这里插入图片描述

字节输入流的基本用法

read是一个一个读的,度到最后会没有的话会显示-1,独处的是ASCII值

输入流如果不存在,就会报错呢?
因为创建出来的文件是没有数据的,没有任何意义。
所以Java就没有设计这种无意义的逻辑,文件不存在直接报错。
程序中最重要的是:数据。

字节输入流循环读取

I//1.创建对象
FileInputStream fis = new FileInputStream("myio\\a.txt");
//2.循环读取
int b;
while ((b =
fis.read())!= -1){
System.out.println((char) b);
//3.释放资源
fis.close();

文件的拷贝

1.创建对象
2.拷贝

核心思想:边读边写
int b;
while((b = fis.read())!= -1){
fos.write(b);
}

//3.释放资源
//规则:先开的最后关闭

fos.close();
fis.close();

弊端和解决方案

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验8 梯度下降法

1. 实验目的 ① 掌握深度学习框架中的自动求导机制&#xff1b; ② 掌握梯度下降法的基本原理&#xff0c;能够使用梯度下降法求解一元和多元线性回归问题。 2. 实验内容 ① 使用TensorFlow的可训练变量和自动求导机制实现梯度下降法&#xff1b; ② 使用梯度下降法训练线性…

2023-04-23 算法面试中常见的动态规划问题

动态规划 1 什么是动态规划 以菲波那切数列求和为例&#xff0c;通过 1.普通的递归2.引入记忆数组memo3.自下而上地解决问题&#xff0c;即动态规划 动态规划的定义 dynamic programming (also known as dynamic optimization) is a method for solving a complex problem by…

Redis-cli Go代码

Redis-cli Go代码 安装 go get github.com/redis/go-redis/v9 建立连接 import ("context""fmt""github.com/redis/go-redis/v9" )client : redis.NewClient(&redis.Options{Addr: "localhost:6379",Password: "", …

支付宝 网站支付Demo 案例【沙箱环境】IDEA如何配置启动Eclipse项目

前言 在跑支付宝提供的支付案例Demo的时候&#xff0c;遇到了一些问题。支付宝提供的Demo是用Eclipse跑的JAVAEE项目。我想用IDEA来跑一下看看、结果使用习惯了Mavne管理jar包和SpringBoot项目。启动web项目的时候&#xff0c;还遇到一些问题。特此记录遇到的一些小问题。顺便回…

c++之常见函数

文章目录 一、inline函数二、函数重载三、函数模板 一、inline函数 1.当进行函数的调用时&#xff0c;系统要建立栈空间&#xff0c;保护现场&#xff0c;传递参数等等&#xff0c;这些工作都需要系统时间和空间得开销然而inline 函数是以空间换时间的做法&#xff0c;省去调用…

FL Studio 21最新发布的版本主要的新功能

FL Studio 21是最新发布的版本,其主要的新功能有: 1. 全新的UI设计:FL 21采用全新的 FLAT UI 设计风格,简洁而不简单,颜值大大提高。 2. 多窗口支持:可以将FL Studio窗口分别显示在不同的显示器上,实现屏幕间切换和多视图编辑。 3. 混音台增强:新增后置通道、多输入输入和多…

反垃圾邮件产品技术要求和测试评价方法

声明 本文是学习信息安全技术 反垃圾邮件产品技术要求和测试评价方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 反垃圾邮件产品等级划分 根据产品功能要求和安全保证要求的不同&#xff0c;以及反垃圾邮件产品适用应用环境的不同&#xff0c;将…

ROS1学习笔记:常用可视化工具的使用(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a;常用可视化工具的实现 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录 一、日志输出工具&#xff1a;rqt_console二、绘制数据曲线&#xff1a;rqt_plot三、 图像渲染工具&#xff1a;rqt_image_view四、图形界面总接口&#xff1a;r…

FE之TSNE:基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例之详细攻略

FE之TSNE&#xff1a;基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例之详细攻略 目录 基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例 # 1、定义数据集 # 2、数据预…

docker部署springboot(jar)项目的方式概括

1、docker挂载目录 实现原理&#xff1a;docker中只需要安装一个JDK镜像&#xff0c;把该镜像的目录挂载到外部的Linux中&#xff0c;如挂载到/usr/data/jar&#xff0c;我们只需要把Jenkins构建的jar文件传输到该目录中&#xff0c;在通过docker命令启动jar即可&#xff1a; …

【代码随想录】刷题Day5

1.链表重复节点删除 82. 删除排序链表中的重复元素 II 前后指针实现 1.做这道题最大的感受就是&#xff1a;不要觉得开辟空间浪费&#xff0c;多用临时变量去记录。越精确越容易成功 2.首先没有节点或者一个节点直接返回 3.因为头部会出现一样元素的情况&#xff0c;以至于我不…

C语言之详解静态变量static

在C语言中static是用来修饰变量和函数的&#xff0c;这篇文章详细介绍了static主要作用&#xff0c;文章中有详细的代码实例&#xff0c;需要的朋友可以参考阅读 在C语言中&#xff1a; static是用来修饰变量和函数的 static主要作用为: 1. 修饰局部变量 - 静态局部变量 2. …

linux软件安装指令---yum和rpm

这里写目录标题 一 yum指令1. yum install 软件名2. yum remove 软件名3 检查已经安装成功的软件 二 rpm指令1 rpm -q2 rpm -qa|less3 rpm -qa| grep python4 搜索文件的详细信息5 查询一个rpm中的包安装到哪里去了6 查询一个文件属于那个包7 软件包的卸载 三 总结四 示范安装 …

【面试系列】四种经典限流算法讲解

固定窗口限流算法 介绍 固定窗口限流算法&#xff08;Fixed Window Rate Limiting Algorithm&#xff09;是一种最简单的限流算法&#xff0c;其原理是在固定时间窗口(单位时间)内限制请求的数量。该算法将时间分成固定的窗口&#xff0c;并在每个窗口内限制请求的数量。具体来…

锦江展焕新演绎,憬黎公寓住造理想

2023年4月19-21日&#xff0c;“万物春生&#xff0c;赴锦程”锦江酒店&#xff08;中国区&#xff09;投资加盟品鉴会&#xff0c;在上海世博展览馆完美收官。这是一场迎着酒店行业复苏浪潮的年度盛会。 插图丨锦江酒店&#xff08;中国区&#xff09; 作为锦江酒店&#xff…

60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载

文章目录 60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载60.1 安装60.2 运行60.3 卸载 60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载 60.1 安装 配置本地yum源&#xff0c;详细信息请参考《openEuler 22.03-LTS 搭建repo服务器》。 清除…

JavaWeb01(WEB环境的搭建)

目录 一.JDK 1.1 JDK是什么? 1.2 如何下载和安装jdk? 1.3 如何配置环境变量? 1.4 如何测试java环境变量是否配置成功? 二.Tomcat 2.1 Tomcat是什么? 2.2 为什么需要使用它? 2.3 如何下载? 2.4 了解Tomcat目录结构 2.5 如何修改Tomcat端口号(0-65535) 2.6 如何使…

Nginx的优化及防盗链

Nginx程序优化 模块 ngx_http_access_module模块 访问模块 ngx_http_auth_basic_module模块 用户访问控制 ngx_http_stub_status_module模块 查看http状态统计模块 ngx_http_gzip_module模块 压缩模块 ngx_http_ssl_module模块 设置http的连接模块 ngx_http_rewrite_mod…

Python selenium 模块使用find_element_by_id无效

一、发生异常: 二、原因 查询安装selenium的版本是4.5.0 这个版本不支持页面对象的定位find_element_by_id方法&#xff0c;以前版本支持这些进行元素定位&#xff1a; find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_elem…

找工作半年,四月成功拿到华为offer,分享一波面经...

前言 不论是校招还是社招都避免不了各种⾯试、笔试&#xff0c;如何去准备这些东⻄就显得格外重要。不论是笔试还是⾯试都是有章可循的&#xff0c;我这个“有章可循”说的意思只是说应对技术⾯试是可以提前准备&#xff0c;所谓不打无准备的仗就是这个道理。 以下为大家&…