一、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);


    }
}

原文地址:http://www.cnblogs.com/wyzel/p/16830052.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性