Java数组转List及Stream的基本方法使用方法

 更新时间:2024年08月20日 12:26:59   作者:ThatMonth  
Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合,这篇文章主要介绍了Java数组转List及Stream的基本方法使用教程,需要的朋友可以参考下

Stream流

Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。

一、创建 Stream

从集合创建:

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();

从数组创建:

String[] array = {"a", "b", "c"};
Stream<String> stream = Arrays.stream(array);

使用 Stream.of 方法:

Stream<String> stream = Stream.of("a", "b", "c");

二、中间操作

filter:过滤符合条件的元素。

stream.filter(s -> s.startsWith("a"));

map:将每个元素转换为另一种形式。

stream.map(String::toUpperCase);

sorted:排序流中的元素

stream.sorted();
stream.sorted(Comparator.reverseOrder());

distinct:去除重复元素

stream.distinct();

limit:截取流中的前 n 个元素

stream.limit(3);

skip:跳过流中的前 n 个元素

stream.skip(2);

三、终端操作

forEach:对流中每个元素执行操作。

stream.forEach(System.out::println);

collect:将流转换为另一种形式(如 List、Set)

List<String> resultList = stream.collect(Collectors.toList());

count:返回流中元素的个数

long count = stream.count();

max:最大值

//数组获取最大值
        int asInt = Arrays.stream(nums).max().getAsInt();
        System.out.println("数组中最大值: "+asInt);
//List获取最大值
        Integer integer = numList.stream().max(Integer::compare).get();
        System.out.println("List中最大值:"+integer);

 reduce:将流中的元素组合为一个值。

Optional<String> concatenated = stream.reduce((s1, s2) -> s1 + s2);

anyMatch、allMatch、noneMatch:检测流中的元素是否匹配给定的条件

boolean anyStartsWithA = stream.anyMatch(s -> s.startsWith("a"));

并行流

List<String> list = Arrays.asList("a", "b", "c");
list.parallelStream().forEach(System.out::println);

 四、数组转List

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @description:
 * @author: ThatMonth
 * @create: 2024-08-16 16:57
 **/
public class Test49 {
    public static void main(String[] args) {
        int[] nums = new int[]{2,1,5,6,2,3};
        System.out.println("原始数组: "+Arrays.toString(nums));
        //数组转List
        List<Integer> numList = Arrays.stream(nums).boxed().collect(Collectors.toList());
        System.out.println("数组转List: "+numList);
        //List转数组
        int[] array = numList.stream().mapToInt(Integer::intValue).toArray();
        System.out.println("List转数组: "+Arrays.toString(array));
    }
}

五、综合使用

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @description:
 * @author: ThatMonth
 * @create: 2024-08-16 16:57
 **/
public class Test {
    public static void main(String[] args) {
        int[] nums = new int[]{2,1,5,6,2,3};
        System.out.println("原始数组: "+Arrays.toString(nums));
        //数组获取最大值
        int asInt = Arrays.stream(nums).max().getAsInt();
        System.out.println("数组中最大值: "+asInt);
        //数组转List
        List<Integer> numList = Arrays.stream(nums).boxed().collect(Collectors.toList());
        System.out.println("数组转List: "+numList);
        //List获取最大值
        Integer integer = numList.stream().max(Integer::compare).get();
        System.out.println("List中最大值:"+integer);
        //条件过滤
        List<Integer> collect = numList.stream().filter(e -> e > 3).collect(Collectors.toList());
        System.out.println("filter 条件过滤大于3的: "+collect);
        //map遍历修改,(flatmap返回是最低一层的数据结构,如List<List<Student>>返回的是List<Student>)
        List<Integer> collect1 = numList.stream().map(e -> ++e).collect(Collectors.toList());
        System.out.println("map 遍历修改加1: "+collect1);
        //规约求和
        int reduc = numList.stream().reduce(100, (e1, e2) -> e1 + e2);
        System.out.println("reduce 规约求和: "+reduc);
        //自定义排序
        List<Integer> collect2 = numList.stream().sorted((e1,e2)->e1-e2).collect(Collectors.toList());
        System.out.println("sorted 自定义排序: "+collect2);
        //任意匹配
        boolean m = numList.stream().anyMatch(e1->e1>100);
        System.out.println("anyMatch 是否存在大于100的: "+m);
        //分页
        List<Integer> collect3 = numList.stream().skip(2).limit(3).collect(Collectors.toList());
        System.out.println("skip,limit 分页查询从第2条起,查3条: "+collect3);
        //去重
        List<Integer> collect4 = numList.stream().distinct().collect(Collectors.toList());
        System.out.println("distinct 去重: "+collect4);
        //转字符串并用‘--'连接
        String collect5 = numList.stream().map(e ->e.toString()).collect(Collectors.joining("--"));
        System.out.println("Collectors.joining 转字符串并用‘--'连接: "+collect5);
        //List转数组
        int[] array = numList.stream().mapToInt(Integer::intValue).toArray();
        System.out.println("List转数组: "+Arrays.toString(array));
    }
}

 示例:

到此这篇关于Java数组转List及Stream的基本方法使用教程的文章就介绍到这了,更多相关Java数组转List内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解读JDK1.8 默认使用什么垃圾收集器

    解读JDK1.8 默认使用什么垃圾收集器

    这篇文章主要介绍了解读JDK1.8 默认使用什么垃圾收集器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java版本不兼容问题详细解决方案步骤

    Java版本不兼容问题详细解决方案步骤

    这篇文章主要介绍了Java版本不兼容问题解决的相关资料,详细分析了问题原因,并提供了解决方案,包括统一JDK版本、修改项目配置和清理旧版本残留等步骤,需要的朋友可以参考下
    2025-05-05
  • 使用Zookeeper实现分布式锁

    使用Zookeeper实现分布式锁

    这篇文章主要介绍了使用Zookeeper实现分布式锁,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java实现Socket服务端与客户端双向通信功能

    Java实现Socket服务端与客户端双向通信功能

    大家好,由于工作上业务的需要,在java项目中引入了socket通信,特此记录一下,用以备份,本文章中的socket通信实现了,服务端与客户端的双向通讯,以及二者之间的心跳通信,服务端重启之后,客户端的自动重连功能,需要的朋友可以参考下
    2025-04-04
  • SpringBoot实现指标监控

    SpringBoot实现指标监控

    这篇文章主要介绍了SpringBoot实现指标监控方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java高并发下锁的优化详解

    Java高并发下锁的优化详解

    这篇文章主要介绍了Java高并发下锁的优化详解,锁是最常用的同步方法之一,在高并发的环境下,激烈的锁竞争会导致程序的性能下降,下面是一些关于锁的使用建议,可以把这种副作用降到最低,需要的朋友可以参考下
    2024-01-01
  • idea运行vue项目设置自定义浏览器方式

    idea运行vue项目设置自定义浏览器方式

    这篇文章主要介绍了idea运行vue项目设置自定义浏览器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • SpringBoot实现签到打卡功能的五种方案

    SpringBoot实现签到打卡功能的五种方案

    在现代应用开发中,签到打卡功能广泛应用于企业考勤管理、在线教育、社区运营等多个领域,它不仅是一种记录用户行为的方式,也是提升用户粘性和活跃度的重要手段,本文将介绍5种签到打卡的实现方案,需要的朋友可以参考下
    2025-06-06
  • SpringBoot单元测试没有执行的按钮问题及解决

    SpringBoot单元测试没有执行的按钮问题及解决

    这篇文章主要介绍了SpringBoot单元测试没有执行的按钮问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 连接MQTT时报错Connection refused: connect及无权连接的解决过程

    连接MQTT时报错Connection refused: connect及无权连接的解决过程

    MQTT连接错误解析,重点排查防火墙配置与mosquitto.conf设置,确保端口开放与远程连接权限配置正确
    2026-05-05

最新评论