美文网首页
java8-lambda操作数组、集合

java8-lambda操作数组、集合

作者: 永往直前 | 来源:发表于2021-04-23 15:28 被阅读0次

简介

         “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

基本语句

Runnable noArguments = () -> System.out.println("Hello World");

ActionListener oneArgument = event -> System.out.println("button clicked");

Runnable multiStatement = () -> {

    System.out.print("Hello");

    System.out.println(" World");

};

BinaryOperator<Long> add = (x, y) -> x + y; q

BinaryOperator<Long> addExplicit = (Long x, Long y) -> x + y;

编写线程

Runnable runnable = () -> {

    System.out.println("Lambda 创建线程");

};

Thread thread = new Thread(runnable);

thread.start();

利用Lambda运算

BinaryOperator<Integer> add = (x, y) -> x + y;

Integer x = add.apply(20, 30);

统计数组中某元素出现的个数

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

long num = Arrays.stream(name).filter(x -> x.equals("赵强")).count();

数组去重并转化成集合存储

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

List<String> stringList = Arrays.stream(name).filter(x -> !x.equals("赵强")).collect(toList());

数组去重,并对元素加后缀

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

List<String> stringList2 = Arrays.stream(name).filter(x -> !x.equals("赵强")).map(y -> y + "加后缀:").collect(toList());

数组求和

        int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 9, 10 };

        int count = 0;

        // for循环

        for (int i = 0; i < a.length; i++) {

            count += a[i];

        }

        // foreach

        count = 0;

        for (int i = 0; i < a.length; i++) {

            count += a[i];

        }

        // Lambda

        int num = Arrays.stream(a).reduce(0, (b, c) -> b + c);

Lambda  的提取对象字段,并拼接

class User{

    private String username;

    private int age;

    public User(){}

    public User(String username, int age) {

        this.username = username;

        this.age = age;

    }

    public String getUsername() {

        return username;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

}

List<User> userList = asList(new User("张三" , 10) , new User("李四" , 10) , new User("王五" , 13));

String result = userList.stream().map(User::getUsername).collect(Collectors.joining("," , "[" , "]"));

输出结果:[张三,李四,王五]

Lambda  groupBy

        List<User> userList = asList(new User("张三" , 10) , new User("李四" , 10) , new User("王五" , 13));

        Stream<User> userStream = userList.stream();

        Map<Integer , List<String>> integerStringMap = userStream.collect(groupingBy(user->user.getAge() , mapping(User::getUsername , toList())));

        System.out.println(integerStringMap.toString());

输出结果:{10=[张三, 李四], 13=[王五]}

String result2 =

                userList.stream().map(User::getUsername)

                        .reduce(new StringJoiner(",1 ", "[", "]"),

                                StringJoiner::add,

                                StringJoiner::merge)

                        .toString();

System.out.println(result2);

输出结果:[张三,1 李四,1 王五]

相关文章

  • 数组 集合 操作

    1、求数组的 交集,并集,差集 2、判断一个数组是否为另一个数组的子集 3、判断某个对象是否在某个数组中 4、数组...

  • 集合框架

    集合框架:方便对多个数组操作集合与数组的区别 集合:长度可变 存储不同类型的元素 只可以存储引用类型 数组...

  • Gradle开发-Groovy集合&数组

    #Groovy 集合 列表集合的定义和元素的操作; 数组的定义和元素的操作; 键值对集合的定义和元素的操作; 范围...

  • ArrayList和LinkedList区别

    1、ArrayList是数组实现的集合操作,而LinkedList是链表实现的集合操作。2、使用List集合的ge...

  • KVC Collection Operators(集合操作)

    集合操作:一个集合/数组通过调用valueForKeyPath:可允许一个集合中的对象属性根据集合操作符做相应的操...

  • 2020-04-22 java 中的集合Collection

    Collection 集合与数组存储数据概述:集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

  • 八 JDK8新特性——第二节 Stream流式思想

    1、使用传统的方式遍历集合 Stream 流有别于I/O流,是对集合和数组进行操作,解决集合数组的弊端 2、使用S...

  • Day09 常用集合以及集合操作符

    1、数组类型2、集合类型1、List2、Map3、Set3、集合操作符操作符1、toMutableList()2、...

  • Arrays

    Arrays:用于操作数组的工具类。里面都是静态方法。 asList:将数组变成list集合。

网友评论

      本文标题:java8-lambda操作数组、集合

      本文链接:https://www.haomeiwen.com/subject/ipclrltx.html