当前位置: 代码网 > it编程>编程语言>Java > Java数组转List及Stream的基本方法使用方法

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

2024年08月20日 Java 我要评论
stream流java 的 stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。stream api 于 java 8 引入,极大地简化了对集

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com