JAVA学习-行为抽象和Lambda.流

一、行为抽象与Lambda

1. 行为抽象:

行为抽象是指将方法作为参数传递给其他方法,从而实现将方法作为一种行为进行传递与调用的能力。在Java中,行为抽象常常使用接口来定义具体的行为。

2. Lambda表达式:

Lambda表达式是Java 8引入的一种新特性,它可以简洁地表示可传递的匿名函数。Lambda表达式可以替代使用匿名内部类的方式传递行为。

二、流(Stream)的概述

1. 流是指用于操作数据的元素序列,它是Java 8中引入的一种处理集合数据的抽象高级概念。流可以让你以一种类似于SQL查询语句的方式来处理集合数据。

2. 流的特点:

- 流是一种惰性计算,只有在终止操作被触发时才会执行。
- 流的操作是链式的,可以通过多个操作的组合来实现复杂的数据处理逻辑。
- 流的操作可以是并行的,可以充分利用多核处理器的优势。

3. 流的使用方法:

- 创建流:可以通过集合、数组、I/O流等方式来创建流。
- 中间操作:对流进行筛选、映射、排序等操作,生成新的流。
- 终止操作:对流进行聚合、收集、输出等操作,得到最终结果。

三、行为抽象和Lambda流的常见使用场景及比较:

1. 行为抽象:

- 常见应用场景:在多线程中,将具体的任务逻辑封装成接口,作为参数传递给线程进行执行。
- 优点:可以将具体的行为进行抽象,提高代码的可复用性和灵活性。
- 缺点:需要定义接口和实现类,对于简单的行为处理较为繁琐。

2. Lambda表达式:

- 常见应用场景:对集合的遍历、排序、筛选等操作,以及并发编程中的任务处理。
- 优点:简洁、灵活,可读性高,减少了样板代码的编写。
- 缺点:对于复杂的行为处理,Lambda表达式可能不够清晰,可读性较差。

3. 流:

- 常见应用场景:对集合数据进行高效操作和处理。
- 优点:代码简洁、可读性高,支持并行处理,适用于处理大量数据。
- 缺点:对于一些特殊需求,可能需要编写自定义的中间操作或终止操作。

代码示例:

// 行为抽象示例

interface Action {

    void execute();

}

class Task {

    public void process(Action action) {

        action.execute();

    }

}

public class Main {

    public static void main(String[] args) {

        Task task = new Task();

        task.process(new Action() {

            @Override

            public void execute() {

                System.out.println("Execute task...");

            }

        });

    }

}

// Lambda表达式示例

public class Main {

    public static void main(String[] args) {

        Task task = new Task();

        task.process(() -> System.out.println("Execute task..."));

    }

}

// 流示例

import java.util.Arrays;

import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        int sum = numbers.stream()

                .filter(n -> n % 2 == 0)

                .mapToInt(n -> n * 2)

                .sum();

        System.out.println(sum); // 输出:18

    }

}

       以上代码示例分别展示了行为抽象、Lambda表达式和流的使用方法。行为抽象示例中,定义了接口Action和类Task,通过实现接口并传递实现类的方式来实现行为的传递与调用。Lambda表达式示例中,通过箭头操作符"->"来定义匿名函数,并将lambda表达式作为参数传递给Task的process方法。流示例中,通过流的中间操作filter和mapToInt以及终止操作sum对集合数据进行处理和计算。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值