首页 > 编程语言 >Java之Stream流的收集

Java之Stream流的收集

时间:2023-07-30 14:12:28浏览次数:35  
标签:Java Stream 收集 list 集合 public String

Java之Stream流的收集

收集Stream流的含义:

就是把Stream流操作后的结果数据转到集合或者数组中去。

Stream流只是方便操作集合/数组的手段

集合/数组才是开发中的目的

Stream流的收集方法

名称 说明
R collect(Collector collector) 开始收集Stream流,指定收集器

Collectors工具类提供了具体的收集方式

名称 说明
public static <T> Collector toList() 把元素收集到List集合中
public statci <T> Collector toSet() 把元素收集到Set集合中
public static Collector toMap(Function ketMapper,Function valueMapper) 把元素收集到Map集合中

代码实现

 public class StreamDemo05 {
     public static void main(String[] args) {
         List<String> list = new ArrayList<>();
         Collections.addAll(list , "张文君","张文俊","周文君","周三","李达","张俊");
 ​
         Stream<String> s1 = list.stream().filter(s->s.startsWith("张"));
         List<String> zhangList = s1.collect(Collectors.toList());
 //        List<String> zhangList = s1.toList();//从jdk16开始支持,得到不可变集合
         System.out.println(zhangList);
 ​
         //注意:流只能使用一次。
         Stream<String> s2= list.stream().filter(s->s.startsWith("张"));
         Set<String> zhangSet = s2.collect(Collectors.toSet());
         System.out.println(zhangSet);
 ​
         //收集成数组
         Stream<String> s3= list.stream().filter(s->s.startsWith("张"));
         // Object[] arrs = s3.toArray();
 //        String[] arrs = s3.toArray(new IntFunction<String[]>() {
 //            @Override
 //            public String[] apply(int value) {
 //                return new String[4];
 //            }
 //        });
         String[] arrs = s3.toArray(String[]::new);
         System.out.println("数组Arrays内容:"+ Arrays.toString(arrs));
     }
 }
 

标签:Java,Stream,收集,list,集合,public,String
From: https://www.cnblogs.com/liandaozhanshi/p/17591371.html

相关文章

  • java多线程
    1、什么是JUC官方文档+源码​ 面试高频问java.utiljava.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks​ java,util工具包、包、分类业务:普通的线程代码ThreadRunnable没有返回值2、线程和进程线程和进程如果不能用一句话说出来的......
  • Java之Stream流综合案例
    Java之Stream流综合案例需求:某个公司的开发部门,分为开发一部和二部,现在需要进行年中数据结算。分析:员工信息至少包含了(名称、性别、工资、奖金、处罚记录)开发一部有4个员工,开发二部有5个员工。分别筛选出2个部门的最高工资的员工信息,封装成优秀员工对象。分别统......
  • Java中过滤出ListA和ListB中字段相同的集合
    Java中过滤出ListA和ListB中age字段相同的User集合在Java中,List是一种常见的集合类型,它可以用来存储一组有序的数据。而对于List中存储的对象类型,我们可以使用泛型来进行限定。假设我们现在有两个List集合,分别为ListA和ListB,它们都存储了一些User对象。现在我们需要从这两个集合......
  • JavaScript、ECMA、CommonJs、NodeJS、TypeScript的关系
    返回JavaScript发布时间:1995发布公司:Netscape(网景)它是一种高级的解释型编程语言,简称JS它最初的设计目标是改善网页的用户体验。......
  • 设计模式-迭代器模式在Java中使用示例
    场景为开发一套销售管理系统,在对该系统进行分析和设计时,发现经常需要对系统中的商品数据、客户数据等进行遍历,为了复用这些遍历代码,开发人员设计了一个抽象的数据集合类AbstractObjectList,而将存储商品和客户等数据的类作为其子类AbstractObjectList类的子类ProductList和Custo......
  • Java的readBytes是怎么实现的?
    1.前言众所周知,Java是一门跨平台语言,针对不同的操作系统有不同的实现。本文从一个非常简单的api调用来看看Java具体是怎么做的.2.源码分析从FileInputStream.java中看到readBytes最后是native调用/***Readsasubarrayasasequenceofbytes.*@parambtheda......
  • 【Java】《2小时搞定多线程》个人笔记
    简介基于慕课网站上的一个一元钱课程《2小时搞定多线程》的个人笔记。线程的起源我们先来看看网络中关于线程起源的说明,理解线程的来龙去脉对于掌握多线程有一定帮助。此部分内容整理自下面两篇网络博客:#线程是什么#线程的起源线程的起源与计算机的发展息息相关。早期的计算机系......
  • VarHandle:Java9中保证变量读写可见性、有序性、原子性利器
    文章目录一、什么是VarHandle0、JMM1、jdk9之前无锁技术的实现二、VarHandle使用1、VarHandle快速上手2、VarHandle常用方法3、实战案例1:解决可见性(比volatile轻量)4、实战案例2:解决指令重排序(比volatile轻量)(1)案例分析:partialordering(2)案例分析:totalordering一、什么是VarHand......
  • Dubbo(一)_Java_SPI
    什么是SPI?Dubbo的源码中大量涉及了JavaSPI设计思想,所以理解SPI对理解Dubbo源码有很大帮助。JavaSPI全称JavaServiceProviderInterface,是Java提供的一种服务提供者发现机制。其核心功能是通过接口找到其实现类。在实际运用中,主要用在程序启动或者运行时,通过SPI机......
  • 4.JAVA的特性和优势
    4.JAVA的特性和优势跨平台/可移植性这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。安全性Java适合于网络/分布式环境,为了达到这个目标,在安全性......