简单数据类型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. Git-分支的建立与合并

    举一个实际工作中可能会遇到的分支建立与合并的例子: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照 ...

  2. factory源码分析——component_registry和object_registry

    registry类主要是为object和component提供一个轻量级的代理(lightweight proxy)来方便factory实现: registry class从uvm_object_wr ...

  3. <7>Lua类的表的实例创建

    根据上一节知识所述Lua中没有像C.C++.JAVA中的类概念,面向对象等 ,但我们可以模拟出来 如下 代码如下: --创建类的表 local Person = {} function Person: ...

  4. Oracle10g 连接 sqlserver hsodbc dblink 方式 非透明网关

    Oracle10g 连接 sqlserver hsodbc dblink 方式 非透明网关 那个上传图片太麻烦了,发布到百度文库了 http://wenku.baidu.com/view/b38ae8 ...

  5. hdu2609最小表示法

    #include <iostream> #include <algorithm> #include <string.h> #include <cstdio&g ...

  6. hdu1757 构造矩阵

    Lele now is thinking about a simple function f(x). If x < 10 f(x) = x.If x >= 10 f(x) = a0 * f ...

  7. Lucene 个人领悟 (三)

    其实接下来就是贴一下代码,熟悉一下Lucene的正常工作流程,或者说怎么使用这个API,更深层次的东西这篇文章不会讲到. 上一篇文章也说了maven的配置,只要你电脑联网就可以下载下来.我贴一下代码. ...

  8. 自制TFT-Usart通信小项目资料打包

    2010-05-08 15:05:00 用orcad画的原理图如下.

  9. 如何在Linux中使用Firejail运行应用程序

    有时您可能希望使用在不同环境中未经过良好测试的应用程序,但您必须使用它们.在这种情况下,关注系统的安全性是正常的.在Linux中可以做的一件事是在沙箱中使用应用程序. “沙盒”是在有限环境中运行应用程 ...

  10. sudo: apt-get: command not found

    apt-get是debian(Ubuntu)才有的包管理器,而在Apple 的OS X系统中是没有的. brew(全称Homebrew)是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或 ...