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需要注入另外一个尚未初始化的 ... 
随机推荐
- W3C 带来了一个新的语言
			2019年12月5日,W3C 宣布: WebAssembly 核心规范 正式成为 Web 官方标准. 继 HTML, CSS, JavaScript 之后,WebAssembly 成为了第4个 Web ... 
- Java单体应用 - 导读
			原文地址:http://www.work100.net/training/monolithic 更多教程:光束云 - 免费课程 Java单体应用 本阶段课程将学习如何进行Java单体Web应用开发,经 ... 
- redis server can not continue
- 字符串(String)的创建,以及字符串的属性及方法
			1.String对象的创建 方法1: var txt = new String("i am String"); console.log(txt); // 结果为:i am Stri ... 
- X-CTF(REVERSE高级)   Reversing-x64Elf-100
			逻辑很简单,如果sub_4006FD函数返回假则返回Nice! 图1 进入sub_4006FD函数,加密过程也很简单,这里值得注意的有两点 一.8*(i%3)是二维数组的第一个参数,这里是取v3的地址 ... 
- Docker三剑客之swarm
			简介 swarm是一种docker集群管理工具,跟三剑客前两者不同的是:compose是一种统一编排的工具,machine是一种远程控制工具,swarm则是将多个docker主机映射成一个docker ... 
- 在Linux环境下设置 ora-01031:insufficient privileges解决方法总结
			今天需要使用sys用户处理问题,但是报错上面ora-01031:insufficient privileges. 在网上有很多方法,这个是自己经过测试的方法步骤. 1:首先检查文件sqlnet.ora ... 
- C语言系列之自增自减运算符的用法(二)
			运算符中最难理解的有自增自减运算符的使用方法,下面我将简单总结一下他们的使用方法 我们知道,C语言运行是由右向左运行的 下面我们来看一个例子 当i等于3的时候 j=++i; 由上面可知,C语言是由右向 ... 
- FFMPEG学习----分离视频里的H.264与YUV数据
			#include <stdio.h> extern "C" { #include "libavcodec/avcodec.h" #include & ... 
- Codeforces_837
			A.扫一遍. #include<bits/stdc++.h> using namespace std; int n; string s; int main() { cin >> ... 
