这个方法在Stream类里定义
需要结合动态规约理解

三个参数

解析

<R> R collect(Supplier<R> supplier,
               BiConsumer<R,? super T> accumulator,
              BiConsumer<R,R> combiner)

supplier:生成用来保存结果的容器
accumulator:处理输入数据,数据会经过它的处理后保存到容器中
combiner:把产生的结果拼接到另一个容器中(用于多线程并行)
返回一个集合

 List<String> asList = stringStream.collect(ArrayList::new,
                                                ArrayList::add,
                                                ArrayList::addAll);
                                                
     String concat = stringStream.collect(StringBuilder::new, 
                                          StringBuilder::append,
                                          StringBuilder::append).toString();

Collector

解析

<R,A> R collect(Collector<? super T,A,R> collector)

Collector把三个参数整合在了里面

例子

注意如果用Collectors.groupingBy(),返回值是Map

 //拼接字符串为一个长字符串
     List<String> asList = stringStream.collect(Collectors.toList());

     //根据居住城市进行分类
     Map<String, List<Person>> peopleByCity
         = personStream.collect(Collectors.groupingBy(Person::getCity));

     //嵌套分类
     Map<String, Map<String, List<Person>>> peopleByStateAndCity
         = personStream.collect(Collectors.groupingBy(Person::getState,
                                                      Collectors.groupingBy(Person::getCity)));

 

posted @ 2023-09-12 08:42 我是牙牙 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 一般项目要求私有字段要以下划线开头, private readonly ILogger _logger; 但是VS自动生成的都是不带下划线的。所以下面记录下修改默认命名规则的方法。 打开选项,找到自己对应语言的命名设置 2. 点击 管理命名样式,再点击弹出框左下角的加号 3. 按上图所示填写后,点击 阅读全文
posted @ 2023-08-08 11:00 我是牙牙 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 监控键盘: using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace WindowsFormsAppTest { public class KeyboardHook { priv 阅读全文
posted @ 2023-02-16 17:04 我是牙牙 阅读(395) 评论(0) 推荐(0) 编辑
摘要: Visual Studio 2022 显示“解析 git 状态输出时出错。”。这可能是因为 git 或 Visual Studio 的版本不匹配。 作为一种解决方法,您可以在“包管理器控制台”中运行以下命令: 阅读全文
posted @ 2022-11-08 13:49 我是牙牙 阅读(685) 评论(0) 推荐(0) 编辑
摘要: 问题: 1.思考“假如简书的服务器部署在IIS服务器上,那为什么在地址栏输入https://www.jianshu.com/u/e0bf9201fbed就可以看到我的页面呢?” 2.有了上面的思考,脑海中大概会浮现“IIS”,“Framework”,“Asp.Net”这几个关键词,所以三者之间的数据 阅读全文
posted @ 2022-10-15 21:10 我是牙牙 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-10-12 21:21 我是牙牙 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 本地化xml生成工具 工具以dotnet cli发布,使用dotnet tool进行安装 dotnet tool install -g islocalizer .NET 6的汉化包已经有现成的了,可以直接进行安装 islocalizer install auto -m net6.0 -l zh-cn 阅读全文
posted @ 2022-08-02 15:44 我是牙牙 阅读(363) 评论(0) 推荐(1) 编辑
摘要: sqlserver 表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里。 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬 阅读全文
posted @ 2022-04-11 15:23 我是牙牙 阅读(837) 评论(0) 推荐(0) 编辑
摘要: 场景重现 在一台Windows 10 64-bit电脑上 安装了Oracle 11gR2 32-bit的客户端 服务器安装oracle 11gR2 64位服务端 用 VS2019 写的一个基于数据库驱动的项目(MVC,webform) 远程操作Oracle数据库都挺正常的 后来发布到服务器IIS M 阅读全文
posted @ 2022-02-16 11:10 我是牙牙 阅读(1873) 评论(0) 推荐(0) 编辑
摘要: 网络上有几种方法,先总结如下: 调用窗体(父):FormFather,被调用窗体(子):FormSub 方法1: 所有权法 //FormFather: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } //在调用FormSub时,要把Form 阅读全文
posted @ 2021-12-22 20:20 我是牙牙 阅读(3213) 评论(0) 推荐(2) 编辑
点击右上角即可分享
微信分享提示