Stream map(Function super T, ? extends R> mapper);IntStream mapToInt(ToIntFunction super T> mapper);LongStream mapToLong(ToLongFunction super T> mapper);DoubleStream mapToDouble(ToDoubleFunction super T> mapper);1234567
Exception in thread "main" java.lang.ClassCastException: com.steam.T_ForeachSteam$DTO cannot be cast to java.lang.Comparable
at java.util.Comparators$NaturalOrderComparator.compare(Comparators.java:47)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
at java.util.TimSort.sort(TimSort.java:220)
at java.util.Arrays.sort(Arrays.java:1512)
at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:348)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.steam.T_ForeachSteam.main(T_ForeachSteam.java:35)123456789101112
获取Map集合中所有的key可以通过map集合的keySet()方法获取例如: Map map = new HashMap(); map.put(xx,xx); //存放数据 //.... 省略 Set set = map.keySet(); //可以通过迭代器进行测试 Iterator iter = set.iter...
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } ...
一、创建Stream对象
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
END
二、使用Stream对象
利用foreach()方法对Stream元素进行遍历
利用filter()方法对Stream元素进行过滤,其中x -> x > 5为Lambda表达式,作为filter的参数。执行过滤后满足过滤条件的Stream元素将会保留
利用map()方法对Stream元素进行一对一映射转换
此外Stream对象还有很多其他非常有用的方法,大家可以自己尝试,你一定会爱上Stream的。
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
JAVA从1.8版本开始就有了Stream对象,通过利用Stream可以一次性完成对多个元素的系列操作,可以规避使用for循环带来的代码高度问题。
一、创建Stream对象
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
二、使用Stream对象
利用foreach()方法对Stream元素进行遍历
利用filter()方法对Stream元素进行过滤,其中x -> x > 5为Lambda表达式,作为filter的参数。执行过滤后满足过滤条件的Stream元素将会保留
利用map()方法对Stream元素进行一对一映射转换
此外Stream对象还有很多其他非常有用的方法,大家可以自己尝试,你一定会爱上Stream的。
、创建Stream对象
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
END
二、使用Stream对象
利用foreach()方法对Stream元素进行遍历
利用filter()方法对Stream元素进行过滤,其中x -> x > 5为Lambda表达式,作为filter的参数。执行过滤后满足过滤条件的Stream元素将会保留
利用map()方法对Stream元素进行一对一映射转换
此外Stream对象还有很多其他非常有用的方法,大家可以自己尝试,你一定会爱上Stream的。
0人赞 添加讨论(0)
Kindery
3楼-- · 3小时前
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使
前言
Java1.8中引入了流的概念,具体实现是java.util.stream.Stream接口,流的性能是高效的,在多核CPU中,可以充分的的利用CPU资源,代码写起来也比常规的写法更简洁,在实际开发中,用得也比较多
我总结了一下Stream流的基本用法和常用方法,让我们来感受一下吧
基础
在使用流之前,需要准备三件事情:
数据源
中间操作链:用来形成流水线
终端操作:用来生成最终结果
中间操作
终端操作
实战
MockData
在实际开发中,我们使用的更多的是DTO,所以新建一个类,再造些数据
中间操作
filter 过滤
Api:
示例
输出如下:
map 类型转换
Api:
类型转换的Api很多,这里只用map举例,其他Api用法大同小异,当我们要把类中的price转换成String或者其他类型的时候,可以这样
输出如下
limit 数据截取
Api:
maxSize表示返回元素的最大数量
输出如下
sorted 数据排序
Api:
先来看看原生排序,会发生异常:
java.lang.ClassCastException: xxxxxxx cannot be cast to java.lang.Comparable
输出如下
自定义排序
输出如下:
倒序
输出如下:
distinct 去重
Api:
输出如下
终端操作
count 数据计数统计
Api:
输出如下
allMatch anyMatch 条件返回
Api:
输出如下
Api:
输出如下
collect 数据规约
Api:
使用
输出如下
一、创建Stream对象
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
二、使用Stream对象
利用foreach()方法对Stream元素进行遍历
利用filter()方法对Stream元素进行过滤,其中x -> x > 5为Lambda表达式,作为filter的参数。执行过滤后满足过滤条件的Stream元素将会保留
利用map()方法对Stream元素进行一对一映射转换
JAVA从1.8版本开始就有了Stream对象,通过利用Stream可以一次性完成对多个元素的系列操作,可以规避使用for循环带来的代码高度问题。
一、创建Stream对象
利用集合类的stream()方法或parallelSteam()方法创建Stream对象。
利用Stream的of()方法创建Stream对象
利用Stream的generate()和iterate()方法创建Stream对象,使用limt()方法可以限制生成元素的个数。
二、使用Stream对象
利用foreach()方法对Stream元素进行遍历
利用filter()方法对Stream元素进行过滤,其中x -> x > 5为Lambda表达式,作为filter的参数。执行过滤后满足过滤条件的Stream元素将会保留
利用map()方法对Stream元素进行一对一映射转换
此外Stream对象还有很多其他非常有用的方法,大家可以自己尝试,你一定会爱上Stream的。
Stream对象是jdk8的新特征,使用步骤是三步:
1.创建Stream对象
2.中间过程,即是杜数据源数据进行想要的处理,其实就是调用封装好的方法,如:map(),filter()等方法。
3.终止操作
注意:想要使用stream,必须要有第三步,没有第三步,中间过程是不执行计算的。
获取stream对象的方法:
a:使用Collection中提供的stream()方法或parallelSteam()方法。
b: 使用Stream中提供的静态of()方法
中间过程:
filter(): 过滤
limit(): 限制结果集个数
skip():跳过结果集个数
distinct():结果集数据去重
....
终止方法:
foreach():遍历
count(): 返回结果集个数
相关问题推荐
对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...
2个都很好就业,更关键的是要学得到东西
获取Map集合中所有的key可以通过map集合的keySet()方法获取例如: Map map = new HashMap(); map.put(xx,xx); //存放数据 //.... 省略 Set set = map.keySet(); //可以通过迭代器进行测试 Iterator iter = set.iter...
不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右
具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...
(1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...
ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } ...
经典版单例模式public class Singleton { private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。 private Singleton() { } public static Singleton getInstance()...
哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...
1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...
1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...
基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...
100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...