Java lambda例子
简单数据类型int,跟Integer在lambda中的使用还不一样,有区别
code:
package com.qhong.lambda.testDemo; import java.util.Arrays;
import java.util.Comparator;
import java.util.List; /**
* Created by qhong on 2018/5/23 9:30
**/
public class baseDemo { public static void main(String[] args) {
//int
int[] arr= {,,,,,,,,};
List<Integer> list= Arrays.asList(,,,,,,,,);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.stream(arr).max().getAsInt());
System.out.println(list.stream().mapToInt(x->Integer.parseInt(x.toString())).max().getAsInt());
System.out.println(list.stream().mapToInt(x->Integer.valueOf(x.toString()).intValue()).min().getAsInt());
System.out.println(list.stream().max(Comparator.comparing(x->x)).get());
System.out.println(list.stream().max(Comparator.comparing(Integer::intValue)).get());
System.out.println("==============Integer=====================");
//Integer
Integer[] arr2= {,,,,,,,,};
System.out.println(Arrays.stream(arr2).mapToInt(x->Integer.parseInt(x.toString())).max().getAsInt());
}
}
boxed:
public class boxedTest { public static void main(String[] args) {
List<String> strings = Stream.of("how", "to", "do", "in", "java")
.collect(Collectors.toList());
System.out.println(strings);
List<Integer> ints= IntStream.of(,,,,).boxed()
.collect(Collectors.toList());
System.out.println(ints);
testPersonIds();
} private static void testPersonIds(){
List<Integer> list= getPersonList().stream()
.map(x->x.getIds().split(","))
.flatMap(x->Arrays.stream(x))
.mapToInt(x->Integer.parseInt(x))
.boxed()
.distinct()
.collect(Collectors.toList());
System.out.println(JSON.toJSONString(list));
} private static List<Person> getPersonList(){
return Arrays.asList(new Person[]{
new Person("hongda","1,2,3,4,5"),
new Person("hongdada","3,4,6,7,8"),
new Person("hongda3","8,9,10")
});
} @Data
@NoArgsConstructor
@AllArgsConstructor
static class Person{
private String name; private String ids;
}
}
mapToInt以后会转换成IntStream
使用boxed,会转换成Stream<Integer>
跟下面的方法进行对比:
private static void testPersonIds(){
Stream<Person> personStream=getPersonList().stream();
Stream<String[]> arrayStream= personStream.map(x->x.getIds().split(","));
Stream<String> stringStream=arrayStream.flatMap(x->Arrays.stream(x));
IntStream intStream=stringStream.mapToInt(x->Integer.parseInt(x));
Stream<Integer> integerStream=intStream.boxed();
Stream<Integer> integerStream1=integerStream.distinct();
List<Integer> list=integerStream1.collect(Collectors.toList());
System.out.println(JSON.toJSONString(list));
}
结果是一样的,这样可以很明显的看出类型的变化。
当然也可以把mapToInt,boxed这两个操作合并成一个map,这里举例使用
Stream<Integer> integerStream=stringStream.map(x->Integer.parseInt(x));
参考:
https://howtodoinjava.com/java-8/java8-boxed-intstream/
https://www.cnblogs.com/andywithu/p/7404101.html
https://www.cnblogs.com/shenlanzhizun/p/6027042.html
https://blog.csdn.net/u014646662/article/details/52261511
Java lambda例子的更多相关文章
- Java Lambda表达式初探
Java Lambda表达式初探 前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用 ...
- Java Lambda简明教程(一)
Lambda表达式背景 许多热门的编程语言如今都有一个叫做lambda或者闭包的语言特性,包括比较经典的函数式编程语言Lisp,Scheme,也有稍微年轻的语言比如JavaScript,Python, ...
- Java Lambda表达式入门[转]
原文链接: Start Using Java Lambda Expressions http://blog.csdn.net/renfufei/article/details/24600507 下载示 ...
- 通过这些示例快速学习Java lambda语法
对于那些不熟悉函数式编程的人来说,基本的Java lambda语法起初可能有点令人生畏.但是,一旦将lambda表达式分解为它们的组成部分,语法很快就会变得有意义并变得非常自然. Java中lambd ...
- Java Lambda表达
Java 8 lambda表达式示例 我个人对Java 8发布非常激动,尤其是lambda表达式和流API.越来越多的了解它们,我能写出更干净的代码.虽然一开始并不是这样.第一次看到用lambda表达 ...
- Java Lambda表达式教程与示例
Lambda表达式是Java 8中引入的一个新特性.一个lambda表达式是一个匿名函数,而且这个函数没有名称且不属于任何类.lambda表达式的概念最初是在LISP编程语言中引入的. Java La ...
- Java Lambda表达式forEach无法跳出循环的解决思路
Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...
- 你真的了解java的lambda吗?- java lambda用法与源码分析
你真的了解java的lambda吗?- java lambda用法与源码分析 转载请注明来源:cmlanche.com 用法 示例:最普遍的一个例子,执行一个线程 new Thread(() -> ...
- Java Lambda表达式入门
Java Lambda表达式入门 http://blog.csdn.net/renfufei/article/details/24600507 Java 8十个lambda表达式案例 http://w ...
随机推荐
- Protobuf数据类型
protobuf编译文件和源码在点击打开链接 1: 数据类型: double: 浮点数 float: 单精度浮点 int32: int类型,使用可变长编码,编码负数不够高效,如果有负数那么使用si ...
- 【转】Loadrunner 性能指标定位系统瓶颈
转至:http://www.51testing.com/html/63/n-1224463.html Loadrunner 性能指标定位系统瓶颈 判断CPU瓶颈 1, %processor time ...
- GCD(III)
GCD 线程间的通信 在iOS开发过程中,我们一般在主线程里边进行UI刷新,例如:点击.滚动.拖拽等事件.我们通常把一些耗时的操作放在其他线程,比如说图片下载.文件上传等耗时操作.而当我们有时候在其他 ...
- C++笔试题2(基础题)
温馨提醒:此文续<C++笔试题(基础题)> (112)请写出下列程序的输出内容 代码如下: #include <iostream> using namespace std; c ...
- 蒙特卡洛(Monte Carlo)法求定积分
https://blog.csdn.net/baimafujinji/article/details/53869358
- ETL面试题集锦
1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答 ...
- 【转】ETL讲解(很详细!!!)
ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...
- web前端利用turf.js生成等值线、等值面
样例如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- ORM some
1 -- 增 models.表名(类).objects.create(字段1=值,字段2=值) 查 models.表名(类).objects.get(pk = 3) models.表名(类).obje ...
- shell 多行注释 块注释
转自 https://www.cnblogs.com/emanlee/p/3749911.html 1 : ' 被注释的多行内容 ' 2 :<<eof 被注释的多行内容 eof 3 :&l ...