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

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.xdnf.cn/news/9087.html

相关文章:

  • 从无符号长整型数中提取字节
  • 【Redis】Redis安装
  • 红外遥控器接收实验:CubeMX配置底层软件
  • 基于vue框架的动漫网站noww0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【windwos】文本编辑器Notepad++ 替代品Notepad--
  • 汇川伺服软件设置提示使能冲突
  • 深入解读Qwen3技术报告(五):后训练对齐
  • Linux系统调用深度剖析
  • 佳易王商品进出库管理系统:数字化库存管理的全能解决方案#海鲜蔬果批发管理#批发出库管理
  • 双臂机器人运动空间与干涉分析仿真技术报告
  • 功能“递归模式”在 C# 7.3 中不可用,请使用 8.0 或更高的语言版本的一种兼容处理方案
  • 【产品经理】如何撰写产品文档
  • 解锁webpack:处理跨域devserver、摇树treeshaking、图片压缩sharp
  • ACM模式中输入输出的处理
  • 硅基计划2.0 学习总结 肆 初稿
  • 深度学习---可视化
  • Linux wget 常用命令详解
  • AI时代新词-AI伦理(AI Ethics)
  • 【Linux】磁盘管理,虚拟机CentOS扩展根分区
  • 像造汽车一样造房子:装配式建筑4.0如何重塑未来人居
  • 启程:MCP开发环境配置和旅游攻略案例体验
  • 基于NSGA2算法的无人机航迹规划算法
  • BaseProviderMultiAdapter多布局总结
  • vertica优化
  • 网口XDP-报文回环转发
  • 知识图谱系列(3):构建方法与流程
  • vue3获取两个日期之间的所有时间
  • 解决leetcode第3509题.最大化交错和为K的子序列乘积
  • OceanBase数据库全面解析(高级特性篇)
  • Real2Render2Real:无需动力学仿真或机器人硬件即可扩展机器人数据