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需要注入另外一个尚未初始化的 ...
随机推荐
- 13.系统总结static
static修饰属性和方法: package com.oop.demo08; //static :被static修饰的变量或者方法随类加载,从属于类,当然对象也可以调用 public class St ...
- Qt Installer Framework翻译(5-2)
创建在线安装程序 联机安装程序获取二进制安装文件中的内容以及存储库描述(Updates.xml).请创建一个存储库,并将其上传到Web服务器.然后在用于创建安装程序的config.xml文件中指定存储 ...
- xsd 和 wsdl
xsd : 可用方便 不同的语言之间的 用命令行来 转换对应语言的. wsdl: 可用方便不同语言的类描述 用命令行 来相互转换. 类似 thift me ?
- Java lambda 表达式常用示例
实体类 package com.lkb.java_lambda.dto; import lombok.Data; /** * @program: java_lambda * @description: ...
- js---描述链表
js描述链表 有些情况下js的数组结构在实际使用中速度很慢,此时可以考虑用链表来代替它: //链表类 function Node(element){ this.element=element; thi ...
- python文件、文件夹的相关操作
python文件.文件夹的相关操作 #1.rename()可以完成对文件的重命名 #rename(需要修改的文件名,新的文件名) import os os.rename("readme.tx ...
- Shell常用命令之主机检测(ping)
主机检测命令ping 向网络主机发送ICMP回传请求 常用选项 -A:洪水攻击选项,启用此功能能在短时间之内发送大量的ping包 -b:开启ping网桥模式,默认不允许ping网桥 -c:设置发送多少 ...
- input输入框联想功能
一直想找一个可以连接后台,可以根据后台内容的input输入框,可以实现联想功能,网上找到一个简单的静态页面的输入框联想,经过一番修改之后终于可以实现读取自己定义的数组的联想了,其实也比较简单就是格式的 ...
- LESS 用法入门
本文旨在加深对 LESS 的理解和记忆,供自己开发时参考.相信对没有接触过 LESS 的程序员还是有用的,大佬绕路. 一. 安装和使用 LESS 1.1 安装 使用命令行安装 LESS npm ins ...
- tf识别非固定长度图片ocr(数字+字母 n位长度可变)- CNN+RNN+CTC
先安装必须的库 tensorflow_gpu==1.15.0 numpy opencv_python github: https://github.com/bai-shang/crnn_ctc_ocr ...