首页 > 编程语言 >Java8新特性-Stream

Java8新特性-Stream

时间:2022-10-26 21:12:44浏览次数:41  
标签:Stream stream list 特性 util add ssh Java8

一、Stream(流)

1.1 简介

1.是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。

2.集合讲的是数据,流讲的是计算。

3.延迟方法:调用Stream方法之后 返回的还是Stream对象 可以继续调用其方法(多次)

4.终结方法: 调用Stream方法之后 返回的不是Stream对象 不能继续使用其方法(一次)

注:Stream自己不会存储元素,不会改变源对象,是延迟执行的,会等到需要结果的时候才执行。

1.2 获取Stream流

方法名称 方法描述
static Stream of(T... values) 将元素转换为Stream
default Stream stream() 将集合转换为Stream
package com.xxx;

import java.util.*;
import java.util.stream.Stream;

public class Test01 {
    public static void main(String[] args) {
        //将元素转换成Stream
        Stream stream = Stream.of(1, "a", 3.14, true, "b");

        List<String> list = new ArrayList<>();
        list.add("ha");
        list.add("wu");
        list.add("英");
        list.add("gua");
        //将集合转Stream
        Stream<String> stream1 = list.stream();

        HashMap<String, String> ssh = new HashMap<>();
        ssh.put("名1","值1");
        ssh.put("名2","值2");
        ssh.put("名3","值3");

        //获取键,转成Stream
        Set<String> set = ssh.keySet();
        Stream<String> stream2 = set.stream();
        //获取值,也转成Stream
        Collection<String> values = ssh.values();
        System.out.println(values.stream());


    }
}

1.3 常用方法

方法名称 方法描述 是否是延迟方法
Stream fifilter(Predicate<? super T> predicate) 用于数据进行过滤
void forEach(Consumer<? super T> action) 对数据进行遍历 不是
long count() 返回此流中元素的计数 不是
Stream limit(long maxSize) 返回一个包含该流的元素流,截断长度不超过 maxSize
Stream skip(long n) 跳过指定元素
static Stream of(T... values) 将元素转换为Stream
Stream map(Function<? super T,? extends R> mapper) 用于进行转换
static Stream concat(Stream<? extends T> a, Stream<? extends T> b) 用于合并两个Stream流资源
package com.xxx;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class Test03 {
    public static void main(String[] args) {
        String[] arrays01 = {"宫本武藏", "宋公明", "苏有朋", "石头人", "时传祥", "李耳", "庄子", "洪七公"};
        String[] arrays02 = {"帕瓦罗蒂", "宋公明", "赵薇薇", "张自忠", "孛儿只斤铁木真", "张天爱", "张翠花"};

        List<Person> list = new ArrayList<>();
        Stream.concat(Stream.of(arrays01).filter(n->n.length() ==3).limit(3),
                Stream.of(arrays02).filter(n->n.substring(0,1).equals("张")).skip(2))
                .map(Person::new).forEach(list::add);
        System.out.println(list);


    }
}

标签:Stream,stream,list,特性,util,add,ssh,Java8
From: https://www.cnblogs.com/wyzel/p/16830052.html

相关文章

  • Java8新特性-函数式接口
    一、函数式接口1.1简介首先的是一个接口接口内有且只有一个抽象方法为防止破坏函数式接口,最好是在接口上使用@FunctionalInterface注解修饰定义一个函数接口pa......
  • 【RocketMQ入门到精通】— RocketMQ初级特性能力 | Message Order,RocketMQ的消息可以
    名言警句任何先进的技术均与魔法无异追本溯源​​经历了6个月的失踪,我将带着干货终究归来!【RocketMQ入门到精通】​​订阅与发布消息的发布是指某个生产者向某个topic发送消......
  • 云服务的7个数据特性​
    云服务的搭建需要将许多数据特性考虑在内,包含物理特、性能要求、易变性、容量、监管要求、事务边界、保存期限7个方面,所有这些数据需求都会对如何存储底层数据造成决策影响......
  • java8 Steam流及Optional的使用
    目录Stream流:获取流1.list获取:2.Map获取3.数组获取流方法分类:1.forEach(终结方法)2.count计数(终结方法)3.filter过滤4.limit截取5.skip跳过6.map映射7.concat组合8.dis......
  • Webpack中的高级特性
    自从webpack4以后,官方帮我们集成了很多特性,比如在生产模式下代码压缩自动开启等,这篇文章我们一起来探讨一下webpack给我们提供的高级特性助力开发。探索webpack的高级特性......
  • java8 Optional使用总结
    原文地址:https://www.cnblogs.com/kingsonfu/p/11009574.html【前言】 java8新特性java8函数接口java8lambda表达式Java8时间日期使用 java8推出的Optional的......
  • Error: Failed to download metadata for repo 'AppStream': Cannot prepare internal
     CentOS-8-AppStream46B/s|38B00:00Error:Failedtodownloadmetadataforrepo'AppStream':Cannotprepareinternalmirrorlist:NoURLsinmirrorli......
  • Java8新特性-接口增强、Lambda表达式、函数式接口
    一、Interface接口增强1.1默认方法1.概念:使用default关键字来修饰的方法2.语法:访问修饰符default返回值类型方法名称(参数列表){方法体;return返回值}3.......
  • CodeChef Match the Streams
    题目链接:​​传送门​​题目中的pdf翻译:题目描述:给定两个序列和。定义序列和的相似度为满足的下标的数量。你需要回答个询问。每个询问给定参数,你需要将更改为,然后计算序......
  • .NET基础知识-常量、字段、属性、特性与委托
    引用网址:http://t.zoukankan.com/hypo106-p-13467360.html常量:const关于常量的几个特点总结一下:常量的值必须在编译时确定,简单说就是在定义是设置值,以后都不会被改......