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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot Admin 环境搭建与基本使用详解

    Spring Boot Admin 环境搭建与基本使用详解

    这篇文章主要介绍了Spring Boot Admin 环境搭建与基本使用,本文主要是对于Spring Boot Admin的基本认识和基本运用,通过本篇博客能够对Spring Boot Admin有一个宏观认知和能够快速上手,需要的朋友可以参考下
    2023-08-08
  • 利用Java工具类Hutool实现验证码校验功能

    利用Java工具类Hutool实现验证码校验功能

    这篇文章主要介绍了利用Java工具类Hutool实现验证码校验功能,利用Hutool实现验证码校验,校验的Servlet与今天的第一篇是一样的,唯一就是验证码的生成是不一样的,利用Hutool生成验证码更快捷.需要的朋友可以参考下
    2022-10-10
  • JavaFX 监听窗口关闭事件实例详解

    JavaFX 监听窗口关闭事件实例详解

    这篇文章主要介绍了JavaFX 监听窗口关闭事件实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • springmvc实现跨服务器文件上传功能

    springmvc实现跨服务器文件上传功能

    这篇文章主要为大家详细介绍了springmvc实现跨服务器文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 详解Java中Optional类的使用方法

    详解Java中Optional类的使用方法

    Optional的作用是什么?他都有哪些方法?阿里规范点名说尽量用Optional来避免空指针,那么什么场景用Optional?本篇文章围绕这三点来进行讲解,感兴趣的可以学习一下
    2022-05-05
  • Java MyBatis本地缓存原理详解

    Java MyBatis本地缓存原理详解

    这篇文章主要介绍了Java MyBatis本地缓存原理详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 一文带你搞懂Java中的数据流处理

    一文带你搞懂Java中的数据流处理

    这篇文章主要为大家详细介绍了Java中数据流处理的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • springboot单元测试依赖踩坑记录

    springboot单元测试依赖踩坑记录

    这篇文章主要介绍了springboot单元测试依赖踩坑记录及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java处理csv文件上传示例详解

    java处理csv文件上传示例详解

    这篇文章主要为大家详细介绍了java处理csv文件上传示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java程序执行过程及内存机制详解

    Java程序执行过程及内存机制详解

    本讲将介绍Java代码是如何一步步运行起来的,还会介绍Java程序所占用的内存是被如何管理的:堆、栈和方法区都各自负责存储哪些内容,感兴趣的朋友跟随小编一起看看吧
    2020-12-12

最新评论