简单数据类型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例子的更多相关文章

  1. Java Lambda表达式初探

    Java Lambda表达式初探 前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用 ...

  2. Java Lambda简明教程(一)

    Lambda表达式背景 许多热门的编程语言如今都有一个叫做lambda或者闭包的语言特性,包括比较经典的函数式编程语言Lisp,Scheme,也有稍微年轻的语言比如JavaScript,Python, ...

  3. Java Lambda表达式入门[转]

    原文链接: Start Using Java Lambda Expressions http://blog.csdn.net/renfufei/article/details/24600507 下载示 ...

  4. 通过这些示例快速学习Java lambda语法

    对于那些不熟悉函数式编程的人来说,基本的Java lambda语法起初可能有点令人生畏.但是,一旦将lambda表达式分解为它们的组成部分,语法很快就会变得有意义并变得非常自然. Java中lambd ...

  5. Java Lambda表达

    Java 8 lambda表达式示例 我个人对Java 8发布非常激动,尤其是lambda表达式和流API.越来越多的了解它们,我能写出更干净的代码.虽然一开始并不是这样.第一次看到用lambda表达 ...

  6. Java Lambda表达式教程与示例

    Lambda表达式是Java 8中引入的一个新特性.一个lambda表达式是一个匿名函数,而且这个函数没有名称且不属于任何类.lambda表达式的概念最初是在LISP编程语言中引入的. Java La ...

  7. Java Lambda表达式forEach无法跳出循环的解决思路

    Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...

  8. 你真的了解java的lambda吗?- java lambda用法与源码分析

    你真的了解java的lambda吗?- java lambda用法与源码分析 转载请注明来源:cmlanche.com 用法 示例:最普遍的一个例子,执行一个线程 new Thread(() -> ...

  9. Java Lambda表达式入门

    Java Lambda表达式入门 http://blog.csdn.net/renfufei/article/details/24600507 Java 8十个lambda表达式案例 http://w ...

随机推荐

  1. (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼

    在Java或J2EE应用程序的设置文件或国际化对应的桌面应用程序的开发中,广泛使用着属性文件.然而,你必须通过J2SDK中的native2ascii工具来将文件中的多字节字符转换成Unicode的字符 ...

  2. HTTP GET的VC三种方式

    一.第一种方式(包装类的方式) a.在VC++添加类,选择typelib b.选择文件:C:\Windows\System32\winhttp.dll 选择到右边生成的类,最后点完成,即产生了一个CW ...

  3. php核心纪要 整理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. UML之状态机图

    状态机图 基本概念: 状态机图,UML 1.x规范中称状态图,是一个展示状态机的图. 状态机图基本上就是一个状态机中元素的投影,这也就意味着状态机图包括状态机的所有特征.状态机图显示了一个对象如何根据 ...

  5. html5-块元素和内联元素

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. Sitecore xDB基础知识 - 识别用户,联系人,访客,客户

    体验数据库(xDB)是Sitecore平台的关键元素,特别是当您希望将解决方案提升到简单的内容管理要求之外时.它用于跟踪您的用户(即联系人,访客,客户)与您网站的互动方式.营销人员可以使用此数据来了解 ...

  7. 常对象与this指针

    [1]示例代码 用代码说事,比较靠谱.请看下例: #include <QDebug> #include <QString> class Person { public: Per ...

  8. java中的神奇"this"

    java中的神奇"this",神奇的原因事它能不用new就可以直接创造一个对象出来,后来研究发现,其实java的“this”使用时,也是"new"了一个当前的对 ...

  9. mysql安装使用

    linux系统 mysql-5.7.14-linux.zip部署包支持在CentOS 6.x/7.x 服务器硬盘大小要求 a) /data/mysql_data  如果存在该独立分区,要求该分区 &g ...

  10. Linux基础命令---修改用户信息usermod

    usermod 修改用户的信息,包括用户名.密码.家目录.uid等. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 use ...