当前位置: 首页 > article >正文

Java基础 Day21

一、Stream 流

思想:流水线式思想

1、获取流对象(将数据放到流中)

(1)集合获取 Stream 流对象

使用Collection接口的默认方法

default Stream<E> stream() 

获取当前集合对象的 Stream 流(单列集合)

map.entrySet().stream()

map集合获取流对象,拿到单列集合后间接获取

(2)数组获取流对象

使用 Arrays 数组工具类中的静态方法

static <T> Stream<T> stream​(T[ ] array) 

将传入的数组封装到 Stream 流对象中

(3)零散数据获取流对象

使用 Stream 类中的静态方法 of()

static <T> Stream<T> of​(T... values) 

把一堆零散的数据封装到 Stream 流对象中

2、中间方法

Stream<T> filter(Predicate<? super T> predicate)

用于对流中的数据进行过滤

Stream<T> limit​(long maxSize)

获取前几个元素

Stream<T> skip​(long n)

跳过前几个元素

Stream<T> distinct​()

去除流中重复的元素依赖 (hashCode 和 equals方法)

static <T> Stream<T> concat​(Stream a, Stream b)

合并a和b两个流为一个流

中间方法调用完成后返回新的 Stream 流可以继续使用,支持链式编程

如果流对象已经被消费过,就不允许再次使用了

3、终结方法

void forEach​(Consumer action)

对此流的每个元素执行遍历操作

long count​()

返回此流中的元素数

4、Stream 流的收集操作

把 Stream 流操作后的结果数据转回到集合

R collect​(Collector collector)

开始收集Stream流,指定收集器

Collectors 工具类提供了具体的收集方式

public static <T> Collector toList​()

把元素收集到List集合中

public static <T> Collector toSet​()

把元素收集到Set集合中

public static  Collector toMap​(Function keyMapper , Function valueMapper)

把元素收集到Map集合中

ArrayList<String> list = new ArrayList<String>();
list.add("Alice");
list.add("Bob");
list.add("Bobby");
list.add("Charlie");
list.stream().filter(s -> s.startsWith("Bob")).forEach(s->System.out.println(s));// 收集到 List集合
List<Integer> s1 = Stream.of(1, 2, 3).filter(s -> s % 2 == 1).collect(Collectors.toList());// 收集到 Map集合
Map<String,Integer> map = L2.stream().filter(new Predicate<String>() {@Overridepublic boolean test(String s) {return Integer.parseInt(s.split(",")[1]) >= 22;}
}).collect(Collectors.toMap(new Function<String, String>() {@Overridepublic String apply(String s) {return s.split(",")[0];}
}, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return Integer.parseInt(s.split(",")[1]);}
}));System.out.println(map);

 

二、File 类

File 类代表操作系统的文件对象(文件、文件夹)

1、构造方法

public File​(String pathname)

根据文件路径创建文件对象

public File​(String parent, String child)

根据父路径名字符串和子路径名字符串创建文件对象

public File​(File  parent, String child)

根据父路径对应文件对象和子路径名字符串创建文件对象

File 对象可以定位文件和文件夹

File 封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的

绝对路径: 从盘符根目录开始,一直到某个具体的文件或文件夹

相对路径: 相对于当前项目

2、判断和查询方法

public boolean isDirectory()

判断此路径名表示的File是否为文件夹

public boolean isFile()

判断此路径名表示的File是否为文件

public boolean exists()

判断此路径名表示的File是否存在

public long length()

返回文件的大小(字节数量),文件夹返回的是错的

public String getAbsolutePath()

返回文件的绝对路径

public String getPath()

返回定义文件时使用的路径

public String getName()

返回文件的名称,带后缀名

public long lastModified()

返回文件的最后修改时间(时间毫秒值)

3、创建和删除方法

public boolean createNewFile()

创建一个新的空的文件

public boolean mkdir()

只能创建一级文件夹

public boolean mkdirs()

可以创建多级文件夹

public boolean delete​()

删除由此抽象路径名表示的文件或空文件夹

delete方法不能删除非空文件夹

delete方法不走回收站

4、遍历方法

public File[] listFiles()

获取当前目录下所有的  “一级文件对象” 

返回 File 数组

当调用者File表示的路径不存在时,返回null

当调用者File表示的路径是文件时,返回null

当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组

当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

http://www.lryc.cn/news/2386897.html

相关文章:

  • 系统开发和运行知识
  • Elasticsearch 分片驱逐(Shard Exclusion)方式简析:`_name`、`_ip`、`_host`
  • 【C++高级主题】异常处理(四):auto_ptr类
  • STM32CubeMX配置使用通用定时器产生PWM
  • WebSphere Application Server(WAS)8.5.5教程第十四讲:JPA
  • Linux系统调用深度剖析
  • 动态规划-918.环形子数组的最大和-力扣(LeetCode)
  • Docker 镜像标签(Tag)规范与要求
  • STM32:Modbus通信协议核心解析:关键通信技术
  • 线程封装与互斥
  • 鸿蒙OSUniApp 开发实时天气查询应用 —— 鸿蒙生态下的跨端实践#三方框架 #Uniapp
  • 第十一天 5G切片技术在车联网中的应用
  • Spring AI 系列之一个很棒的 Spring AI 功能——Advisors
  • Vue3 + TypeScript + el-input 实现人民币金额的输入和显示
  • 2.1 C++之条件语句
  • ZYNQ实战:可编程差分晶振Si570的配置与动态频率切换
  • Linux `ls` 命令深度解析与高阶应用指南
  • 【MPC控制 - 从ACC到自动驾驶】5. 融会贯通:MPC在ACC中的优势总结与知识体系构建
  • Day3 记忆内容:map set 高频操作
  • 初等数论--Garner‘s 算法
  • NV211NV212美光科技颗粒NV219NV220
  • SQL解析工具JSQLParser
  • Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析
  • html使用JS实现账号密码登录的简单案例
  • sorted() 函数和sort()函数的区别
  • Solr搜索:比传统数据库强在哪?
  • 【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)
  • 51c自动驾驶~合集55
  • 【前端基础】Promise 详解
  • 高性能管线式HTTP请求