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

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

相关文章:

  • 袁庭新陕西理工大学讲座报告:从技术原理到行业变革,构建AI时代的职业护城河
  • Webpack 5 模块联邦(Module Federation)详解与实战
  • 曼昆经济学原理第九版目录
  • 洛谷 P3374 【模板】树状数组 1(线段树解法)
  • 关于 smali:1. Smali 基础语法入门
  • [Java恶补day7] 42. 接雨水
  • AI巡检系统适合多大面积的餐厅?
  • 爬虫学习-Scrape Center spa6 超简单 JS 逆向
  • Spring Boot + OpenCSV 数据清洗实战:CSV 结构化处理与可视化
  • leetcode hot100刷题日记——17.搜索插入位置
  • java基础(面向对象进阶高级)内部类
  • Webtrees 手册/程序概述
  • 游戏:元梦之星游戏开发代码(谢苏)
  • 【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析
  • C++多态与虚函数
  • 【大模型Pre-Training实战总结】实现Qwen3增量预训练,Lora训练与合并
  • 时空弯曲和测地线浅谈
  • 系统发生GC内存溢出、频繁 Full GC、JVM报错
  • Set系列集合
  • 解锁 MCP 中的 JSON-RPC:跨平台通信的奥秘
  • 学术网站建设/百度一下首页官网
  • 网站数据库问题/三只松鼠网络营销方案策划书
  • 福州商城网站建设/宣传软文案例
  • 学网站建设需要什么/竞价推广教程
  • 在哪些网站可以做毕业设计/成都网络营销公司排名
  • 微网站开发企业选择/做一个网站需要什么