首页 > 其他分享 >Stream流

Stream流

时间:2022-11-29 12:33:09浏览次数:39  
标签:name Stream ArrayList list add 集合

不可变集合:Stream流

什么是不可变集合?
不可变集合,就是不可被修改的集合。
集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变。否则报错。

为什么要创建不可变集合?
如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。
或者当集合对象被不可信的库调用时,不可变形式是安全的。

体验Stream流的作用
创建一个集合,存储多个字符串元素
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
把集合中所有以"张"开头的元素存储到一个新的集合
把"张"开头的集合中的长度为3的元素存储到一个新的集合
遍历上一步得到的集合中的元素输出。

package com.itheima.d2_stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
   目标:初步体验Stream流的方便与快捷
 */
public class StreamTest {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        Collections.addAll(names, "张三丰","张无忌","周芷若","赵敏","张强");
        System.out.println(names);
//
//        // 1、从集合中找出姓张的放到新集合
//        List<String> zhangList = new ArrayList<>();
//        for (String name : names) {
//            if(name.startsWith("张")){
//                zhangList.add(name);
//            }
//        }
//        System.out.println(zhangList);
//
//        // 2、找名称长度是3的姓名
//        List<String> zhangThreeList = new ArrayList<>();
//        for (String name : zhangList) {
//            if(name.length() == 3){
//                zhangThreeList.add(name);
//            }
//        }
//        System.out.println(zhangThreeList);

        // 3、使用Stream实现的
        names.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
    }
}

Stream流的作用是什么,结合了什么技术?
简化集合、数组操作的API。结合了Lambda表达式。
说说Stream流的思想和使用步骤。
先得到集合或者数组的Stream流(就是一根传送带)。
把元素放上去。
然后就用这个Stream流简化的API来方便的操作元素。

 

  

标签:name,Stream,ArrayList,list,add,集合
From: https://www.cnblogs.com/popopopopo/p/16935093.html

相关文章

  • 关于 deepstream test3 中的问题总结。
    1.cudaDeviceProp结构体‍此结构体是针对cudaGetDeviceProperties函数的过去显卡的信息。具体信息......
  • 为 repo 'appstream' 下载元数据失败
    为repo'appstream'下载元数据失败问题在Centos下报出该错误是因为在2022年1月31日,CentOS团队从官方镜像中移除CentOS8的所有包。他们被转移到https://vault.centos.......
  • 解决AQDefaultDevice (173): skipping input stream 的输出问题
    升级到Xcode8.0以后再使用AVFoundation框架的AVPlayer进行播放会一直打印AQDefaultDevice(173):skippinginputstream000x0,这不是工程的问题,只需要在Xcode中设......
  • 如何用微软StreamInsight 处理和分析实时数据
    StreamInsight是SQLServer2008R2中的新模块,它提供了复杂事件处理(CEP,ComplexEventProcessing)的功能。即对于来自多数据源的无限事件序列提供近乎零延时的连续处理......
  • nodejs中buffer 和 stream
    nodeJS中的buffer(缓冲区):https://juejin.cn/post/7056337343304695839  JavaScript语言没有二进制数据类型,如果需要处理tcp流、视频、音频必须使用buffer来处理二进......
  • Redis学习(十)之redis中的数据类型之Streams类型
      1、redis流这种结构类似于日志追加; 2、redis生成一个唯一id为每个流,使用id检索他们的关联条目或者处理后续条目,这个怎么理解???到底是怎么关联的? 3、redis流支持多......
  • 使用Stream流遍历筛选数据
    使用Stream流遍历筛选数据@TestpublicvoidPredicate(){  List<String>objects=newArrayList<>();    objects.add("张三丰");    objects.add(......
  • nginx安装,upstream配置
    nginx安装和upstream配置安装系统centos7.9相关命令yuminstall-ypcrezlibopensslyuminstall-ypcre-developenssl-develzlib-devel./configure......
  • Stream
    map泛型方法R对应的是返回值?Function也是map收集?packagecom.stream;//stream体验//把张的三个字的留下importjava.util.ArrayList;importjava.util.Collecti......
  • 【java技术总结】stream来处理分组问题
    1.使用Collectors.groupingBy(方法引用返回分组属性作为k)2.使用Collectors.groupingBy(方法引用返回分组属性作为k,Collectors的静态类返回值)3.使用reduce归并数据,reduc......