再来看看Java的新特性

分类:WEB服务     作者:     发布时间:2019-11-19

其间没有展现sorted、count这个都好了解。至于collect这个后边讲,用的比较多。

除了目标流以外,还有一些类型流,比如说 IntStream上面求和回来的是Optional目标,那能够直接回来Integer类型吗?

//运用映射办法mapToInt就ok了
int price = menu.stream//Stream
 .mapToInt)//IntStream
 .sum;
//类型流转化回目标流,能够运用boxed
IntStream intStream = menu.stream
 .mapToInt);
Stream Integer boxed = intStream.boxed;
//当然了IntStream中有许多int类型操作的办法,就不逐个举例了,源码翻开一看,见名知意
仿制代码

前面讲的常用的中心操作,回来值都是流,还有一些中止操作,回来值都是Optional或许数值。可别忘了Stream最开端的初衷是为了处理调集操作问题。终究转化成调集运用的中止操作collect,参数是接口 Collector,里边有很多转化办法。

最常用的难道toList 这个办法了,将回来成果变成List。

List JSONObject list = menu.stream
 .filter 10)
 .collect);
//当然还有toSet等等,举一反三
仿制代码

比较常用,便是字符串链接了。运用joining办法

String s = menu.stream
 .filter 10)
 .map)
 .collect);
仿制代码

依据供给的特点分组,运用 groupingBy ,为了便利阐明,给上面各种食物一个type值:

List JSONObject menu = new ArrayList ;
menu.add.putOpt.putOpt.putOpt);
menu.add.putOpt.putOpt.putOpt);
menu.add.putOpt.putOpt.putOpt);
menu.add.putOpt.putOpt.putOpt);
Map String, List JSONObject type = menu.stream
 .collect));
System.out.println;
//{normal=[{"price":"6","name":"肉夹馍","type":"normal"}, {"price":"6","name":"煎饼","type":"normal"}], good=[{"price":"28","name":"宫保鸡丁","type":"good"}, {"price":"30","name":"鱼香肉丝","type":"good"}]}
仿制代码

与分组相似的还有一个办法 partitioningBy ,分区,不过它的参数位所以boolean类型。

我的大众号用于博客同步