Java Lamada
Collection:
->stream:返回一个以 colleciotn 元素为数据源的数据流。
-->map: 入参 Function 对象,将此流中的元素依次作用于传入的 Function,然后返回新的数据流。
示例:
List<String> list = new ArrayList<>();
list.add("1");
list.add("10");
list.add("100");
List<Integer> ilist = list
.stream() //流对象
.map(Integer::valueOf) //对元素应用 Integer.valueOf 函数,String 转换为 Integer
.collect(Collectors.toList());
输出:[1, 10, 100]
--peak: 入参 Function 对象,无返回值(void 函数),将此流中的元素依次作用于传入的 Function,然后返回新的数据流
class TOBJ {
String ele;
public String getEle() {
return ele;
}
public void setEle(String ele) {
this.ele = ele;
}
TOBJ(String value) {
this.ele = value;
}
@Override
public String toString() {
return "TOBJ{" +
"ele='" + ele + '\'' +
'}';
}
}
List<TOBJ> list = new ArrayList<>();
list.add(new TOBJ("a"));
list.add(new TOBJ("b"));
list.add(new TOBJ("c"));
List<TOBJ> slist = list
.stream() //流对象
.peek(item -> item.setEle(item.getEle().toUpperCase()))
.collect(Collectors.toList());
输出:[TOBJ{ele='A'}, TOBJ{ele='B'}, TOBJ{ele='C'}]
--flatMap: 入参 Function 对象,将此流中的元素依次作用于传入的 Function,产生每个对象的流,然后合并各元素的流返回新的数据流。流合并操作。
示例:
List<String> list = new ArrayList<>();
list.add("1|2|3");
list.add("10|2|30");
list.add("1|200|300");
List<Integer> ilist = list
.stream() //流对象
.map(item -> item .split("\\|")) //分割元素为数组
.flatMap(Arrays::stream)
.map(Integer::valueOf)
.collect(Collectors.toList());
输出:[1, 2, 3, 10, 2, 30, 1, 200, 300]
-->distinct: 去重
List<String> list = new ArrayList<>();
list.add("1|2|3");
list.add("10|2|30");
list.add("1|200|300");
List<Integer> ilist = list
.stream() //流对象
.map(item -> item .split("\\|")) //分割元素为数组
.flatMap(Arrays::stream)
.map(Integer::valueOf)
.distinct()
.collect(Collectors.toList());
输出:[1, 2, 3, 10, 30, 200, 300]
-->sorted:入参 Comparator,根据传入的Comparator排序。
class TOBJ {
String ele;
public String getEle() {
return ele;
}
public void setEle(String ele) {
this.ele = ele;
}
TOBJ(String value) {
this.ele = value;
}
@Override
public String toString() {
return "TOBJ{" +
"ele='" + ele + '\'' +
'}';
}
}
List<TOBJ> list = new ArrayList<>();
list.add(new TOBJ("d"));
list.add(new TOBJ("b"));
list.add(new TOBJ("c"));
List<TOBJ> slist = list
.stream() //流对象
.sorted(Comparator.comparing(TOBJ::getEle)) //根据 ele 元素排序
.collect(Collectors.toList());
输出:[TOBJ{ele='b'}, TOBJ{ele='c'}, TOBJ{ele='d'}]
--reduce: 入参 BinaryOperator,对流元素做连续两两运算,最后返回与流元素相同类型结果:
List<Integer> ilist = new ArrayList(){{
add();
add();
add();
add();
}};
Optional<Integer> sum = ilist.stream().reduce(Integer::sum);
输出:Optional[109]
--> ... ...
Java Lamada的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java 8之二小坑:stream parallel 和 lamada
Stream:parallel乱序 Java 8 stream流为处理集合时非常方便.遇到的一个坑是为了提高在多核cpu下的性能,尝试了parallel().数据源是HashSet的,在做分割的时候发 ...
- Java简单实现AOP,Java通用异常拦截,Java与Lamada
直接看代码不废话.不懂Lamada直接百度... package test; /** * QQ:1448376744 * @author 花间岛 * */ //控制器 public class Con ...
- Upgrading to Java 8——第一章 Lambda表达式
第一章 Lambda表达式 Lamada 表达式是Java SE 8中最重要的新特性,长期以来被认为是在Java中缺失的特性,它的出现使整个java 语言变得完整.至少到目前,在这节中你将学习到什么是 ...
- 201521123057 《Java程序设计》 第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...
- 【Java入门提高篇】Day31 Java容器类详解(十三)TreeSet详解
上一篇很水的介绍完了TreeMap,这一篇来看看更水的TreeSet. 本文将从以下几个角度进行展开: 1.TreeSet简介和使用栗子 2.TreeSet源码分析 本篇大约需食用10分钟,各位看官请 ...
- 【Java入门提高篇】Day20 Java容器类详解(三)List接口
今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的. Lis ...
- Java知识回顾 (18)Java 8、9、11的新特性
Java 8 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 Jav ...
- [Java复习] Spring IoC
1. Spring bean的生命周期? 1. 对Bean进行实例化(相当于new) 对于BeanFactory 当客户向容器请求一个尚未初始化的bean(或初始化bean需要注入另外一个尚未初始化的 ...
随机推荐
- 多级反向代理java获取真实IP地址
public static String getIpAddress(HttpServletRequest request){ String ip = request.getHeader("x ...
- 移除sitemap中的entity
下面截图是sitemap所在的位置 如果遇到什么原因,当前使用的entity被弃用需要删除,必须要把当前site map 引用的entity也一并删除. 不然会导致site map不能正常加载
- python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中
关键词:爬虫.python.request.接口.excel处理 思路: 1.首先准备好excel文档,把股票代码事先编辑进去. 2.脚本读取文档,依次读出股票代码到指定站点发起请求获取股票信息 3. ...
- python应用airtest库的环境搭建
参考https://blog.csdn.net/ywyxb/article/details/64126927 注意:无论是在线还是离线安装,最好在管理员权限下执行命令 1.安装Python36(32位 ...
- 每天玩转3分钟 MyBatis-Plus - 6. select 用法
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...
- re模块的使用
re模块下的函数 compile(pattern):创建模式对象 import re pat = re.compile('D') m = pat.search('CBA') #等价于re.search ...
- redis端口6379的由来
有一个技巧,Redis端口号6379,是手机键盘上的MERZ.
- 解决keil5不支持Samsung 2440A等较旧型号Soc的方法
手上有一块mini2440,最近想拿来跑一下程序.于是去下了最新版的Keil5,结果发现创建工程时没有Samsung一系列型号的CPU选项. 没有办法,去网上找了很久,才发现原因是新版的Keil5 ...
- Shiro身份验证及授权(二)
一.Shiro 身份验证 身份验证的步骤: 收集用户身份 / 凭证,即如用户名 / 密码: 调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationExcepti ...
- IDEA | 识别不出自建webapp文件夹
背景: 今天自建了一个webapp文件夹,发现idea识别不出来是web应用的资源文件夹 解决方案 打开project structure配置,如下图