Stream-List的转换

公众号:(百合骑士coding)~ 分享好玩的新技术

一、Stream是什么?

Stream是Java8处理集合的关键抽象概念,他可以对集合进行非常复杂的查找,过滤,筛选等操作。

二、Stream的基本操作

1.创建Stream

从集合和数组中获取流。

2.中间操作

对数据源的数据进行操作。

3.终止操作

终止操作执行中间操作链,并产生结果。
这里要注意对流操作完成之后需要进行关闭操作。

三、Stream的具体操作

1、中间操作-筛选与切片

filter:接收Lambda表达式,从流中排除某些操作。
limit:截断流,使元素不超过给定对象。
skip(n):跳过元素,返回一个扔掉了前n个元素的流
distinct:筛选,通过流生成的hashCode()和equals()去除重复的元素。

2、中间操作-映射

map:接收Lambda,将元素转换为其他形式或者提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap:接收一个函数作为参数,将流中的每一个值都换成另一个流,然后把所有的流连接成一个流。

就在这里我们想把List转换为int数组


 public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);

        int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
     for(int i:arr){
         System.out.println(i);
     }
    }

3.中间操作-排序

sorted():自然排序
sorted(Comparator com):定制排序

5.终止操作-查找和匹配

  • allMatch–检查是否匹配所有元素
  • anyMatch–检查是否至少匹配一个元素
  • noneMatch–检查是否没有匹配所有元素
  • findFirst–返回第一个元素
  • findAny–返回当前流中的任意元素
  • count–返回流中元素的总个数
  • max–返回流中最大值
  • min–返回流中最小值

该处使用的url网络请求的数据。

总结

这里就是我想告诉大家的,大家可以多用流操作,不然就只能用一下循环来转换了。

在处理List类型的转换时,可以使用Stream流来进行操作。引用中给出了将List<Integer>转换为int[]的方法。可以通过使用stream()方法将List<Integer>转换Stream<Integer>对象流,然后使用mapToInt()方法将每个元素转换为int类型,并最后使用toArray()方法将Stream转换为int[]数组。例如:List<Integer> list = new ArrayList<>(Arrays.asList(vinteger)); int[] vint = list.stream().mapToInt(Integer::valueOf).toArray()。同样地,可以使用mapToLong()和mapToDouble()方法将List<Integer>转换为long[]和double[]数组。引用提供了将字符串数组转换为数值型数组的示例,通过使用Arrays.stream()方法将字符串数组转换Stream<String>对象流,然后使用mapToInt()、mapToLong()和mapToDouble()方法将每个元素转换为相应的数值类型,并最后使用toArray()方法将Stream转换为对应的数值型数组。引用中提到在将Integer[]数组转换List<Integer>时,可以使用Arrays.asList()方法将数组转换为集合,注意该方法返回的是Arrays类中的ArrayList而不是java.util中的ArrayList,它无法自动扩容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java StreamList、Integer[]、int[] 的相互转换](https://blog.csdn.net/studyday1/article/details/127764247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Java Stream 常用数组类型转换用法](https://blog.csdn.net/studyday1/article/details/127807196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值