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=  {1,2,3,4,5,44,33,22,11};
        List<Integer> list= Arrays.asList(1,2,3,4,5,44,33,22,11);
        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=  {1,2,3,4,5,44,33,22,11};
        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(1,2,3,4,5).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

posted @   hongdada  阅读(361)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示