扬州住房和建设局网站wordpress自适应杂志幻灯

news/2025/9/27 0:53:27/文章来源:
扬州住房和建设局网站,wordpress自适应杂志幻灯,承装承修承试材料在哪个网站做,wordpress安装phpJava Stream使用这段时间在学数据库和Java#xff0c;发现Java的Stream实际上和数据库的查询操作非常类似。这里简单介绍Stream的用法#xff0c;并和Sql Server中的操作联系起来。此文为初学Stream所写#xff0c;以后对Stream有更深的理解后会重写当我们使用一个流的时候发现Java的Stream实际上和数据库的查询操作非常类似。这里简单介绍Stream的用法并和Sql Server中的操作联系起来。此文为初学Stream所写以后对Stream有更深的理解后会重写当我们使用一个流的时候通常包括三个基本步骤获取一个数据源(source)数据转换执行操作获取想要的结果每次转换原有 Stream 对象不改变返回一个新的 Stream 对象(可以有多次转换)这就允许对其操作可以像链条一样排列变成一个管道如下图所示。一、创建 stream有多种方式生成 Stream Source从 Collection 和数组Collection.stream()Collection.parallelStream()Arrays.stream(T array) or Stream.of()从 BufferedReaderjava.io.BufferedReader.lines()静态工厂java.util.stream.IntStream.range()java.nio.file.Files.walk()自己构建java.util.Spliterator其它Random.ints()BitSet.stream()Pattern.splitAsStream(java.lang.CharSequence)JarFile.stream()创建Stream示例// 1. Individual valuesStream stream Stream.of(a, b, c);// 2. ArraysString [] strArray new String[] {a, b, c};stream Stream.of(strArray);stream Arrays.stream(strArray);// 3. CollectionsList list Arrays.asList(strArray);stream list.stream();二、stream 操作stream的操作分为两大类一类为中间操作一类为终端操作。中间操作:返回值仍然为一个流不会消耗流终端操作:返回最终结果终端操作会消耗掉流使之不再可用1.stream.filter()stream.filter() 是一个中间操作stream.filter()用于对stream进行某种筛选stream.filter() 相当于Sql server 中from ... where ...在filter()中应当给出筛选条件准确的说应该实现Predicate接口这个接口将被应用于stream中的每一个元素判断其是否应该被包含在结果stream中。这个接口只有一个抽象方法待用户实现抽象方法应该返回一个布尔值当布尔值为真时stream.filter()将这个元素包含在结果stream中stream.filter()使用示例:创建Integer流然后筛选出偶数ArrayList arrlist new ArrayList();Stream st arrlist.stream();Stream st2 st.filter(new Predicate() {Overridepublic boolean test(Integer arg0) {return arg0 % 2 0;}});还可以用lambda表达式来实现ArrayList arrlist new ArrayList();Stream st arrlist.stream();Stream st2 st.filter((o1)-(o1 % 2 0));关于Predicate接口它还有.and(),.or(),.negate(),.isEqual()四个默认方法这里不多介绍。但这些方法也十分常用对于稍微复杂一点的逻辑就需要使用。使用Precicate接口需要导入import java.util.function.Predicate;2.stream.map()stream.map()是一个中间操作stream.map()用于对stream进行某种映射stream.map() 相当于Sql server 中select虽然这么说不太恰当因为Sql sever 的select实际上时 SQL语言中 \(\sigma , \prod\)的加和而stream.map() 应该是\(\prod\).在stream.map()中应该指定转换条件准确的说应该实现一个Function()接口,这个接口将被用于stream的每一个元素将元素按照一定的映射关系映射成新的元素。Function接口的参数意义使用Function接口需要导入import java.util.function.Function;这个接口只有一个抽象方法待用户实现抽象方法apply() 接受一个T类型的参数返回一个R类型的结果stream.map()使用示例:创建Integer流然后映射到其原值的两倍ArrayList arrlist new ArrayList();for(int i 1; i 5; i) {arrlist.add(i);}Stream st arrlist.stream();Stream st2 st.map(new Function() {Overridepublic Integer apply(Integer arg0) {return arg0 * 2;}});ArrayList ans new ArrayList();ans (ArrayList) st2.collect(Collectors.toList());for(Integer i : ans) {System.out.print(i );}还可以用lambda表达式来实现// 初学可以先不这么写ArrayList ans (ArrayList)arrlist.stream().map((o1)-(2*o1)).collect(Collectors.toList());stream.map() 的几种其他形式IntStream mapToInt(ToIntFunction super T mapper);LongStream mapToLong(ToLongFunction super T mapper);DoubleStream mapToDouble(ToDoubleFunction super T mapper);这三者实际上是对\(Function\) 中 R的固定封装3.stream.flatMap()stream.flatMap()是一个中间操作stream.flatMap()和stream.map()都是进行映射的方法区别在于flatMap()处理的元素类型仍是流flagMap用于将若干个流先拆分成若干个单个元素再整合成一个流即流的合并。简单来说flatMap()将集合的集合降维成单个元素的集合实例: 将数组\([[1,2,3],[4,5,6],[7,8],[9]]\)转化为[1,2,3,4,5,6,7,8,9]ArrayList list_2 new ArrayList();list_2.add(new ArrayList(Arrays.asList(1,2,3)));list_2.add(new ArrayList(Arrays.asList(4,5,6)));list_2.add(new ArrayList(Arrays.asList(7,8)));list_2.add(new ArrayList(Arrays.asList(9)));ArrayList list_1 (ArrayList) list_2.stream()// list_2.stream() 为 [1,2,3] [4,5,6] [7,8] [9] 每个表示流的不同元素.flatMap((o1)-(o1).stream())// 以 o1 [1,2,3]为例,(o1)-(o1).stream() 转化为1,2,3.collect(Collectors.toList());for(Integer i : list_1) {System.out.print(i );}stream.flagMap()的几种其他形式IntStream flatMapToInt(Function super T, ? extends IntStream mapper);LongStream flatMapToLong(Function super T, ? extends LongStream mapper);DoubleStream flatMapToDouble(Function super T, ? extends DoubleStream mapper);这三者实际上是对\(Function\) 中 R的固定封装4.stream.allMatch() ,stream.anyMatch() 和 stream.noneMatch()stream.allMatch() 和 stream.anyMatch()均为终端操作传入一个Predicate函数式接口用于指定条件5.stream.collect()stream.collect()为终端操作Stream的核心在于collect即对数据的收集。用法一将流转化为Collection或MapCollectors.toCollection() 将数据转换成Collection,只要是Collection的实现都可以例如ArrayListHashSet该方法能够接受一个Collection对象示例//ListStream.of(1,2,3,4,5,6,7,8,9).collect(Collectors.toCollection(ArrayList::new));//SetStream.of(1,2,3,4,5,6,7,8,9).collect(Collectors.toCollection(HashSet::new));// Stream.of(1,2,3,4,5,6,7,8,9).collect(Collectors.toList());// Stream.of(1,2,3,4,5,6,7,8,9).collect(Collectors.toSet());// Stream.of(1,2,3,4,5,6,7,8,9).collect(Collectors.toMap(key,value));用法二字符串聚合规约Collectors.joining()拼接有三个重载方法底层实现是StringBuilder通过append方法拼接到一起并且可以自定义分隔符(这个感觉还是很有用的很多时候需要把一个list转成一个String指定分隔符就可以实现了非常方便)、前缀、后缀。Student studentA new Student(20190001, 小明);Student studentB new Student(20190002, 小红);Student studentC new Student(20190003, 小丁);//使用分隔符201900012019000220190003Stream.of(studentA, studentB, studentC).map(Student::getId).collect(Collectors.joining());//使用^_^ 作为分隔符//20190001^_^20190002^_^20190003Stream.of(studentA, studentB, studentC).map(Student::getId).collect(Collectors.joining(^_^));//使用^_^ 作为分隔符//[]作为前后缀//[20190001^_^20190002^_^20190003]Stream.of(studentA, studentB, studentC).map(Student::getId).collect(Collectors.joining(^_^, [, ]));用法三统计个数Collectors.counting() 统计元素个数这个和Stream.count() 作用都是一样的返回的类型一个是包装Long另一个是基本long但是他们的使用场景还是有区别的这个后面再提。// Long 8Stream.of(1,0,-10,9,8,100,200,-80).collect(Collectors.counting());//如果仅仅只是为了统计那就没必要使用Collectors了那样更消耗资源// long 8Stream.of(1,0,-10,9,8,100,200,-80).count();用法四集合分组Collectos.groupingBy()实现集合分组返回值为一个Map假如现在有一个实体Studentpublic class Student {private String name;private int score;private int age;public Student(String name,int score,int age){this.name name;this.score score;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getScore() {return score;}public void setScore(int score) {this.score score;}public int getAge() {return age;}public void setAge(int age) {this.age age;}}现在对其按照Name分组Map StrListStrMap students.stream().collect(Collectors.groupingBy(Student::getName));6.stream.forEach() 和stream.forEach() 终端操作stream.forEach()遍历流中的每一个元素不一定依靠流的顺序,而stream.forEachOrdered()按照流的顺序遍历。Stream.of(1,2,3,4,5,6).forEach(System.out::println);7.stream.max() , stream.min() , stream.count()三个终端操作stream.max()返回流中的最大值stream.min()返回流中的最小值未传入Comparator则填null默认用Comparable的compareTo函数比较。stream.count()返回流中元素个数8.stream.findAny()返回流中任意一个元素如果流为空返回一个空的Optional.List list Arrays.asList(1, 2, 3, 4, 5, 6);Optional any list.stream().findAny();

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

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

相关文章

US$228 VVDI2 BMW CAS4+ Function Authorization Service

VVDI2 BMW CAS4+ Function Authorization ServiceIf you just buy SV86-B, you want to get the functions for BMW CAS4+, you have to buy authorization for BMW OBD SV86-3 firstTips: No need shipping, after yo…

网站底部悬浮企业网站设计的重要性

题目 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。 示例 1: 输入:a 2, b [3] 输出:8 示例 2: 输入:a 2, b [1,0] 输出:1024…

【SimpleFOC-小项目】驱动电机正转3周

基于 SimpleFOC 让电机正转三周,你需要完成以下几个关键步骤。以下是完整的代码示例和说明: 1. 硬件连接 首先确保硬件正确连接:电机(如BLDC)与驱动板(如L6234、DRV8302等)连接驱动板与MCU(如Arduino Uno)的P…

网站管理员功能保定干洗机做网站

修改背景图 说明 这里我准备基于百度飞桨PaddleSeg项目的人像分割模块做一个人像抠图,这里顺便用上了双向绑定和图片拖拽打开。 下面就是示例: 用颜色替换 用背景图替换 保存成功后的图片 一、使用百度飞桨PaddleSeg //初始化 引擎engine new Padd…

如何查看网站模板七牛 百度云加速 wordpress

像这样的日期组件,在后台管理项目中是比较多的,而且加了快捷选项,代码量较多,因此封装成组件。 封装这一类型的组组件,主要是了解输入框双向绑定 v-model 的过程。 1、了解输入框双向绑定的过程: 官网&am…

大气的金融网站it外包的收益主要有

最近在改造开发MySQL时要使用pt-query-digest工具分析性能问题,一路遇到了一些问题,记录下来便于日后翻看。 系统: #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 在安装过程中遇到了很多的问题&#…

电脑宽带网站济宁网站建设_云科网络

文章目录 安装Flask SQLAlchemy配置数据库连接创建模型类数据库操作插入数据查询数据更新数据删除数据 总结 Flask是一个轻量级的Python Web框架,其灵活性和易用性使其成为开发人员喜爱的选择。而ORM(对象关系映射)则是一种将数据库中的表与面…

联合体union的基本用法

引言 联合体(union)是 C/C++ 中一种特殊的复合数据类型,它允许不同类型的成员共享同一块内存空间,主要用于在有限内存中存储 “互斥使用” 的数据。 一、基本用法 1.1 定义与声明 使用 union 关键字定义联合体,语…

US$30.4 BMW-CAS4 Interface Board for Yanhua Mini ACDP Module1

BMW-CAS4 Interface Board for Yanhua Mini ACDP Module1Promotion: Use [ACDP] as coupon code for 7% Off. Kindly note this coupon can only work on Yanhua ACDP Series.BMW-CAS4 Interface board, applicable to…

个人网站设计目的e4a怎么做网站app

本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述。 1. 概览 本文描述了OVSDPDK中的包分类器(datapath classifier -- aka dpcls)的设计与实现思路。本文的内容主要牵涉到分类器对…

网站编程多少钱校园网站建设规划书

CSDN博主 单片机 毕业设计 物联网 嵌入式

弱结构光三维扫描重建

在视觉三维重建中,要获取稠密的三维点云,通常采用面结构光来实现。但是作为普通的开发者,昂贵的工业相机、投影仪、工装等设备令人望而却步。如何利用手上常见的设备,实现稠密点云重建呢?早在 1998 年,Jean-Yves…

9.27 git与pycharm

今日学习内容:pycharm与git管理 在pycharm中可以用git对代码进行基础的管理今日bug 连不上github,可能是代理的原因 fatal: unable to access https://github.com/Shoiger/Alice.git/: Unsupported proxy syntax in …

淘宝客的优惠卷网站怎么做的电脑浏览器打不开是怎么回事

这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过。 打开Xcode,新建项目选择Single View Application,Product Name填写iOS8SwiftDrawingCirclesTutorial,Organization Name和Organization …

用前端框架做自适应网站杭州住房和城乡建设部网站

NIC注册和注销的通用架构Linux系统中NIC网络设备驱动程序利用网络代码进行注册和注销有其通用的架构,这里以PCI Ethernet NIC为例,其他设备类型只是所以函数名称和调用方式不同,主要依据于设备总线提供的接口。其中(a)为设备注册的大致流程图…

TDS文件搜索_Winform版本与avalonia开发差异比较:(一)系统消息的接收与无标题栏/边框窗体的移动与尺寸调整

TDS文件搜索_Winform版本与avalonia开发差异比较:(一)系统消息的接收与无标题栏/边框窗体的移动与尺寸调整一、Winform和Avalonia的选择 收到私信,有看过上一篇的朋友说想了解Winform相关内容,感谢建议,因为因此…

台州网站制作维护规范门户网站的建设和管理办法

说明: 1)访问应用业务,读取不到数据,show databases;查看数据库报错 2)重启docker服务,服务启动失败,查看日志报错如下图所示 3)报错信息:chmod /data/docker: read-only…

宜昌做网站优化万网ip查询

一、 在终端输入 sudo apt-get install openssh-server 二、 执行如下命令 sudo apt-get install ssh 三、 开启 ssh-server,输入密码 service ssh start 四、 验证,输入 ps -e|grep ssh,看到sshd成功 ps -e|grep ssh五、 连接

手机版网站开发网站运行时错误如何做

1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 Iimread(pout.tif); Jimadjust(I,[0.2 0.5],[0 1]);%将0.2-0.5之间的灰度扩展到整个0-1范围,这种处理 对于强调感兴趣灰度区非常有用…