java1.8 新特性(关于 match,find reduce )操作

  1. match处理Integer集合

    package lambda.stream;
    /**
    * @author 作者:cb
    * @version 创建时间:2019年1月4日 下午2:35:05 
    
    */
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class StreamDemo {
        public static void main(String[] args) {
            testMatch();
        }
    
        public static void testMatch() {
            List<Integer> asList = Arrays.asList(1, 2, 3);
            // 必须满足任何一个元素 都 小于5 才返回true 有一个元素大于5 都会返回false
            boolean allMatch = asList.stream().allMatch(i -> i < 5);
            System.out.println(allMatch);
            List<Integer> asList1 = Arrays.asList(8, 9, 10);
            // 必须满足任何一个元素 都不能 小于5 才返回true 有一个元素小于5 都会返回false
            boolean noneMatch = asList1.stream().noneMatch(i -> i < 5);
            System.out.println(noneMatch);
            List<Integer> asList2 = Arrays.asList(8, 9, 3);
            // 只要有任何一个元素 小于 5 都返回true
            boolean anyMatch = asList2.stream().anyMatch(i -> i < 5);
            System.out.println(anyMatch);
    
        }

    结果:

    true
    true
    true
  2. find 
    package lambda.stream;
    /**
    * @author 作者:cb
    * @version 创建时间:2019年1月4日 下午2:35:05 
    
    */
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class StreamDemo {
        public static void main(String[] args) {
            testFind();
        }
    
        public static void testFind() {
            List<Integer> asList = Arrays.asList(5, 2, 3);
            // 从该list中获取第一个元素
            Integer num = asList.stream().findFirst().get();
            System.out.println(num);
            Integer anyNum = asList.stream().findAny().get();
            System.out.println(anyNum);
        }

    结果:

    5
    5
  3. reduce 实现一个集合的累加
    package lambda.stream;
    /**
    * @author 作者:cb
    * @version 创建时间:2019年1月4日 下午2:35:05 
    
    */
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class StreamDemo {
        public static void main(String[] args) {
            testReduce();
        }
    
        public static void testReduce() {
            List<Integer> asList = Arrays.asList(5, 2, 3);
            // 实现该集合的累加
            Integer reduce = asList.stream().reduce(0, (i, j) -> i + j);
            System.out.println(reduce);
            // 实现该集合的乘积
            Integer reduce1 = asList.stream().reduce(1, (i, j) -> i * j);
            System.out.println(reduce1);
    
        }

    结果:

    10
    30

原文地址:https://www.cnblogs.com/920913cheng/p/10240219.html

时间: 2024-08-27 14:16:30

java1.8 新特性(关于 match,find reduce )操作的相关文章

Java8 新特性 Steam() 中间有状态操作

中间有状态操作 Java8 新特性 Stream 练习实例 ??中间操作,就是把数据处理成自己想要的类型,并且有状态操作,是在所有的数据基础上进行操作的.比如dictinct(去重),sorted(排序).... 所有的有状态操作: 去重 distinct 跳过 skip 截断 limit 排序 sorted 去重 distinct //找出所有的对象的类型 @Test public void test1() { list.stream() //找出所有的对象的类型 .map(Sku::getS

java1.8新特性(一)

一直在更新java 版本,原来也没有关注java版本的变化 引入的一些新的api  引起注意的还是  关于一些并发包的使用,那时候才对每个版本的特性 去了解了一下,虽然 不一定都用上了,但是不管学习什么语言,花点时间学习新的api还是很有必要的,在工作中 还用一些 1.8的新特性,但是 始终 是 不明白.总是有问题,特意花些时间 去重点学习一下,如果其中 有什么说的不对,请一定要提出来! 用户 对象 User: package com.java; public class User { Stri

了解Java1.8新特性

前几天电脑上的JDK自动更新到1.8,这两天了解了一下JDK1.8的一些新特性.下面就来浅谈一下我所了解的. 我们都知道,Java是不能多继承的,但是可以多实现.它与C++不同,C++是可以多继承的.尽管Java可以实现多个接口,但是接口中只能有抽象方法,不能有具体的实现.但是在JDK1.8中,接口里新增了默认方法.可以对默认方法进行具体的实现,但是这个方法必须是default.看下面这段代码: 1 interface AA{ 2 public int add(int a,int b); //申

java1.4升级到java1.5 新特性

前几天和一位腾讯的技术大牛聊天,聊到关于jdk的很多支持,包括jvm的优化,gc的调用机制,1.4-到1.8每次升级版本的新特性等,做软件这行这么多年了,一直在使用java,但是却从来没有细细的研究每个版本新特性到底有什么不同,所以特意编写了这么一篇文档,让自己能了解些他们的新特性,也共享一下新特性的改变,当然我下面的验证并不能当做最官方的,但最起码我是一个一个实验了,如果存在问题或解释的不正确的,也劳烦各位大牛给予指正. 目前我下载的jdk版本,如果大家需要这些版本的话,后期我会上传到百度云上

Java8 新特性 Stream 无状态中间操作

无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 filter 映射 map 扁夹化 flatMap 遍厉 peek 过滤 filter 接收一个谓词断言,boolean Pridicate< T > 根据返回值类型来确定是否过滤这一条属性. // 过滤 filter @Test public void filterTest() { list.stre

Java1.8新特性

1.Lambda表达式和函数式接口 Lambda表达式(也称为闭包)是Java 8中最大和最令人期待的语言改变.它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理:函数式开发者非常熟悉这些概念.很多JVM平台上的语言(Groovy.Scala等)从诞生之日就支持Lambda表达式,但是Java开发者没有选择,只能使用匿名内部类代替Lambda表达式. Lambda的设计耗费了很多时间和很大的社区力量,最终找到一种折中的实现方案,可以实现简洁而紧凑的语言结构.最简单的Lambda表

java1.8 新特性(五 如何使用filter,limit ,skip ,distinct map flatmap ,collect 操作 java集合)

使用filter 根据 条件筛选 出结果:例如 找出 user 中 age >=15 的用户 package lambda.stream; /** * @author 作者:cb * @version 创建时间:2019年1月4日 下午2:35:05 */ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; publi

java1.8新特性(optional 使用)

经常在程序中出现 java.lang.NullPointerException  为了避免  报错,总是要进行一些 是否为null 的if else 判断 ,1.8 可以使用optional 类 来简化处置   optional :A container object which may or may not contain a non-null value.:可能包含也可能不包含非空值的容器对象. 既然optional 是一个容器对象,那就应该先创建该 对象 才能调用该对象的一些方法 创建op

JAVA JDK1.5-1.9新特性

JAVA JDK1.5-1.9新特性 1.5 1.自动装箱与拆箱: 2.枚举(常用来设计单例模式) 3.静态导入 4.可变参数 5.内省 1.6 1.Web服务元数据 2.脚本语言支持 3.JTable的排序和过滤 4.更简单,更强大的JAX-WS 5.轻量级Http Server 6.嵌入式数据库 Derby 1.7 1,switch中可以使用字串了 2.运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 4