JUC并发编程_四大函数式接口和 Stream 流式计算

ops/2024/9/25 0:30:24/

JUC并发编程_四大函数式接口和 Stream 流式计算

    • 四大函数式接口
      • Function 接口
      • Predicate 接口
      • Consumer 接口
      • Supplier 接口
    • Stream 流式计算
      • Stream 的中间操作
        • filter:过滤流中的元素,只保留满足条件的元素
        • map:对流中的每个元素应用一个函数,并将结果收集到一个新的流中
        • sorted:对流中的元素进行排序
        • distinct:去除流中的重复元素
        • limit:获取流中的前N个元素
        • skip:跳过流中的前N个元素
      • Stream 的终端操作
        • forEach:对流中的每个元素执行一个操作
        • collect:将流中的元素收集到一个List、Set或Map中
        • count:统计流中的元素数量
        • min/max:查找流中的最小或最大元素
        • reduce:通过某种计算将流中的所有元素组合起来,得到一个值

四大函数式接口

Function 接口

接受一个输入参数并返回结果。主要用于转换数据,比如字符串转大写、数字加一等。
方法:R apply(T t)

java">Function<String, String> function = (String str) -> {if (StrUtils.isNotEmpty(str)) {return str;} else {return "";}
};
System.out.println(function.apply("blu"));

Predicate 接口

方法:boolean test(Object o)
接受单个输入参数并返回布尔值结果。主要用于条件判断,比如检查字符串是否为空、数字是否大于某个值等。

java">Predicate predicate = (Predicate<String>) str -> StrUtils.isEmpty(str);
System.out.println(predicate.test("blu"));

Consumer 接口

方法:void accept(T t)
接受单个输入参数但不返回任何结果,主要用于执行某些操作,比如打印日志、发送数据等。

java">Consumer<String> consumer = str -> System.out.println(str);
consumer.accept("blu");

Supplier 接口

方法:T get()
不接受任何参数但返回某种类型结果,主要用于提供数据,比如生成随机数、获取当前时间等。

java">Supplier<Integer> supplier = () -> {Random random = new Random();//生成0-100的随机整数return random.nextInt(101);
};
System.out.println(supplier.get());

Stream 流式计算

java">List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("4");
list.add("");
list.stream().filter(s -> {return !s.isEmpty();}).filter(s -> {return Integer.parseInt(s) > 2;}).map(s -> {return Integer.parseInt(s);}).sorted(Comparator.reverseOrder()).distinct().limit(1).forEach(i -> {System.out.println(i * 100);});

Stream 的中间操作

filter:过滤流中的元素,只保留满足条件的元素
java">Stream<T> filter(Predicate<? super T> predicate);
map:对流中的每个元素应用一个函数,并将结果收集到一个新的流中
java"><R> Stream<R> map(Function<? super T, ? extends R> mapper);
sorted:对流中的元素进行排序
java">Stream<T> sorted(Comparator<? super T> comparator);
distinct:去除流中的重复元素
java">Stream<T> distinct();
limit:获取流中的前N个元素
java">Stream<T> limit(long maxSize);
skip:跳过流中的前N个元素
java">Stream<T> skip(long n);

Stream 的终端操作

forEach:对流中的每个元素执行一个操作
java">stream.forEach(i -> {//do Something
});
collect:将流中的元素收集到一个List、Set或Map中
java">stream.collect(Collectors.toList());
count:统计流中的元素数量
java">long count = stream.count();
min/max:查找流中的最小或最大元素
java">stream.min(Comparator.comparing(i -> {return i;
}));
reduce:通过某种计算将流中的所有元素组合起来,得到一个值

求和

java">List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, Integer::sum);

字符串拼接

java">List<String> strs = Arrays.asList("B", "L", "U");
String all = strs.stream().reduce("Hello ", (s, s2) -> s + s2);

http://www.ppmy.cn/ops/115529.html

相关文章

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host 表示服务器主机的地址和端口号 URL 里面不是已经有 Host 了吗&#xff0c;为什么还要写一次&#xff1f; 这里的 Host 和 URL 中的 IP 地址、端口什么的&#xff0c;绝大部分情况下是一样的&#xff0c;少数情况下可能不同当前我们经过某个代理进行转发。过程中&#xf…

Redis 主从复制

1.主从复制的概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(master)&#xff0c;后者称为从节点(slave),数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&#xff0c;每台Redis服务器都是主节…

Rustrover2024.2 正式发布:个人非商用免费,泰裤辣

如果这个世界本身 已经足够荒唐 那究竟什么才能算是疯狂 爱情就是这样 一旦错过了 就会有另一个人代替 我们知道 jetbrains 在今年的早些时候正式为 rust 语言发布了专用的 IDE &#xff0c;也就是 rustrover。如今 rustrover 也正式跻身为 jetbrains IDE 系列的一员猛将。…

基于 UniApp 平台的学生闲置物品售卖小程序设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案…

Web前端开发

首先打开&#xff0c;VS code新建文件夹&#xff0c;命名为index.HTML&#xff0c;然后先对内容进行输入&#xff0c;也就是在波蒂里面进行输入&#xff0c;将社会主义核心价值观的基本内容输入好&#xff0c;然后在页面呈现的效果是这样的 因为有一个alert警告框标签&#xff…

毕业设计选题:基于ssm+vue+uniapp的捷邻小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

论文阅读【时间序列】ModerTCN (ICLR2024)

【时间序列】ModerTCN (ICLR2024) 原文链接&#xff1a;ModernTCN: A Modern Pure Convolution Structure for General Time Series Analysis 代码仓库&#xff1a;ModerTCN 简易版本实现代码可以参考&#xff1a;&#xff08;2024 ICLR&#xff09;ModernTCN&#xff1a;A Mod…