瞧瞧,java Stream的常用方式

1 篇文章 0 订阅

废话不多说,直接上代码

package com.example.demo.list;


import com.alibaba.fastjson.JSONArray;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * stream流计算
 *
 * @program: demo
 * @author: zzg
 * @create: 2022-05-12 22:43
 */

public class StreamServiceImpl {

    public void create(){
        ArrayList<String> strings = new ArrayList<>();
        //获取顺序流
        Stream<String> stream = strings.stream();
        //获取并行流
        Stream<String> stringStream = strings.parallelStream();
        //使用Arrays中的stream()方法,讲数组转成流
        Integer[] integers = new Integer[10];
        Stream<Integer> stream1 = Arrays.stream(integers);

        //使用Stream中的静态方法:of() iterate() generate()
        Stream<Integer> integerStream = Stream.of(1, 2, 3);

        Stream<Integer> limit = Stream.iterate(0, a -> a + 2).limit(6);

        Stream<Double> limit1 = Stream.generate(Math::random).limit(3);

        //使用bufferedReader.lines()方法,将每行内容转成流
        try {
            BufferedReader bufferedReader = new BufferedReader(new FileReader("/test.txt"));
            Stream<String> lines = bufferedReader.lines();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }

    //list<object>转 list<object>
    public void listToList(){
        List<StreamClass> list = StreamClass.getList();
        List<HashMap<String, String>> s = list.stream().map(a -> {
            //return 你需要的object
            /** //单个值
             return a.getId();
             */
            HashMap<String, String> map = new HashMap<>();
            map.put("s", a.getName());
            return map;
        }).collect(Collectors.toList());
    }

    //list<object>转 map
    public void listToMap(){
        List<StreamClass> list = StreamClass.getList();
        //(key1, key2) -> key2)代表key1和key2键重复时返回key2做主键
        Map<String, StreamClass> map = list.stream()
                .collect(
                    Collectors.toMap(
                            a->{
                                //本身或者其他对象 或者属性
                                return a.getId();
                            },
                            a->{
                               /**
                                //某个属性
                                return a.getName();
                                */
                               //本身或者其他对象
                               return a;
                            }, (key1, key2) -> key2)
                );

        //举例
        Map<String, String> collect = list.stream().collect(Collectors.toMap(StreamClass::getId, StreamClass::getName));
        Map<String, StreamClass> collect1 = list.stream().collect(Collectors.toMap(StreamClass::getId, Function.identity()));
        Map<Integer, ArrayList<String>> collect2 = list.stream().collect(Collectors.toMap(a -> {
            return Integer.valueOf(a.getId());
        }, a -> {
            ArrayList<String> strings = new ArrayList<>();
            strings.add(a.getName());
            return strings;
        }));

        //以id分组聚合
        Map<String, List<StreamClass>> collect3 = list.stream().collect(Collectors.groupingBy(StreamClass::getId));

    }


    //过滤
    public void filter(){
        List<StreamClass> list = StreamClass.getList();
        List<StreamClass> collect = list.stream().filter(a -> {
            if ("1".equals(a.getId())) {
                return true;
            }
            return false;
        }).collect(Collectors.toList());
        System.out.println(collect);


    }

    public static void main(String[] args) {
        StreamServiceImpl streamService = new StreamServiceImpl();
        streamService.filter();
    }
}


class StreamClass{
    private String id;

    private String name;

    private Integer sort;

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public StreamClass(String id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "StreamClass{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

    public static List<StreamClass> getList(){
        ArrayList<StreamClass> streamClasses = new ArrayList<>();
        streamClasses.add(new StreamClass("1","我是1"));
        streamClasses.add(new StreamClass("2","我是2"));
        streamClasses.add(new StreamClass("3","我是3"));
        streamClasses.add(new StreamClass("4","我是4"));
        streamClasses.add(new StreamClass("5","我是5"));
        return streamClasses;
    }
}

未完待续。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值