Stream常用的API

package com.maxinyang.stream;

import com.maxinyang.excel.User;
import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 作者:killgod
 * 口号:天王盖地虎
 */
public class Stream
{
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        users.add(new User("老马1","18","河南洛阳"));
        users.add(new User("老马2","18","河南洛阳"));
        users.add(new User("老马3","18","河南洛阳"));
        users.add(new User("老马4","18","河南洛阳"));
        users.add(new User("老马5","18","河南洛阳"));
        users.add(new User("老马6","18","河南洛阳"));
        users.add(new User("老马7","18","河南洛阳"));
        users.add(new User("老马8","18","河南洛阳"));
        users.add(new User("老马9","18","河南洛阳"));
        users.add(new User("老马10","18","河南洛阳"));
        /**
         *  stream()获取流
         *  中间操作:
         *  filter():   用户判断 返回true或false
         *  distinct(): 去重
         *  collect():  收集返回ture放入一个新的list集合当中
         *  skip(x):   切片将穿过流的前X条数据过滤,也就是跳过X个元素
         *  map():    映射,可以将集合对象属性抽离出来;  当然映射可以对字段进行操作
         *  sorted():  排序,利用内部比较器
         *  limit() : 截断流,让流内数据不超过X条;
         *
         *
         *  终端操作:
         *      收集操作
         *          collect(X):将符合的数据收集成一个X类型集合
         *          toset tolist joining返回字符串  groupingBy分组
         *       检查与匹配
         *          allMatch():检查是否匹配元素,返回boolean
         *          anyMatch():检查是否至少匹配一个元素,返回boolean
         *          noneMatch():检查是否没有匹配所有元素
         *          findFirst():返回第一个元素
         *          count():返回元素个数
         *          man() min():最大值 | 最小值
         *       归约
         *          reduce(0,(x,y)->x+y): 将xy相加放入0汇总
         *
         *
         *
         */
        List<User> data1 = users.stream().filter(x -> x.getName().equals("老马1")).collect(Collectors.toList());
        data1.forEach(x->{
            System.out.println(x);
        });
        System.out.println(" 去重操作");
        // 去重操作
        users.stream().distinct().forEach(System.out::println);
        // 切片
        System.out.println("切片");
        users.stream().skip(2).forEach(System.out::println);
        // 映射
        System.out.println("映射");
        List<String> collect = users.stream().map(user -> user.getName()).collect(Collectors.toList());
        collect.forEach(System.out::println);
        // 映射字段操作
        System.out.println("映射字段操作");
        List<String> collect1 = users.stream().map(user -> user.getName()).filter(x->x.equals("老马1")).collect(Collectors.toList());
        // 或
        List<String> collect2 = users.stream().map(user -> user.getName() + "1").collect(Collectors.toList());
        collect2.forEach(System.out::println);
        // 截断
        System.out.println("截断流");
        List<User> collect3 = users.stream().limit(5).collect(Collectors.toList());
        collect3.forEach(x-> System.out.println(x));

        // 终止操作
        // 是否匹配所有元素
        boolean a = users.stream().allMatch(x -> {
            return x.getAge().equals("18");
        });
        System.out.println( "是否匹配所有元素:" + a);
        // 是否至少匹配一个元素
        boolean b = users.stream().anyMatch(x -> {
            return x.getName().equals("老马1");
        });
        System.out.println( "是否至少匹配一个元素:" + b);
        // 是否没有匹配所有元素
        boolean c = users.stream().noneMatch(x -> {
            return x.getName().equals("老马1");
        });
        System.out.println( "是否没有匹配所有元素:" + c);

        // 归约
        List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
        Integer reduce = integers.stream().reduce(0, (x, y) -> x + y);
        System.out.println(reduce);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值