Java中Stream流主要方法介绍

Stream 流相关方法

Stream 处理的是 集合 或者 数组

// 集合对象
Stream<T> stream();
	集合对象调用可以直接获取对应当前集合存储元素的 Stream 流对象。

// 数组
Stream<T> Arrays.Stream(T[] t);
	利用 Arrays 工具类对当前需要按照 Stream 流方式操作的数据进行转换操作,根据当前数组的数据类型和数据存储情况,返回一个对应的 Stream 流对象
  1. Stream流中skip和limit方法介绍
Stream<T> skip(long n);
	限制跳过当前 Stream 流对应元素的个数,【掐头】
Stream<T> limit(long n);
	限制当前 Stream 对应的元素总个数,【去尾】

import java.util.ArrayList;

public class Test01 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");
        list.add("g");
        list.add("h");
        list.add("i");
        list.add("j");
        list.add("k");
        list.add("l");

        /**
         * 测试skip,limit方法,
         * skip方法是指跳过当前Stream流对应元素的个数也就是【掐头】
         * limit 方法是限制当前Stream对应元素的总个数
         */
        list.stream()
                .skip(3)
                .limit(7)
                .forEach(System.out::println);

    }
}

运行结果展示:
在这里插入图片描述

  1. Stream流中sorted方法介绍
    定义一个Person类(自行实现有参无参构造方法,setter和getter方法,以及toString方法):
public class Person {
    private Integer id;
    private String name;
    private Integer age;
    private Boolean gender;
}
Stream<T> sorted();
	对当前 Stream 流存储的进行排序操作,要求元素有自然顺序或者遵从 Comparable 接口,默认【升序】

import java.util.ArrayList;
public class Test02 {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        for (int i = 0; i < 5; i++){
            int age = (int)(Math.random() * 50);
            list.add(new Person(i + 1,"zhangsan",age,false));
        }

         list.stream()
                 .sorted((o1,o2) -> o1.getAge() - o2.getAge())
                 .forEach(System.out::println);

    }
}

运行结果展示:
在这里插入图片描述
3. Stream流中filter方法介绍

Stream<T> filter();
	判断过滤当前 Stream 流可以保存的数据条件,满足条件保留,不满足条件移除。
	
import java.util.ArrayList;
public class Test03 {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            int age = (int) (Math.random() * 50);
            list.add(new Person(i + 1, "zhangshan", age, false));
    }

        list.stream()
                .filter(p -> p.getAge() >= 18)
                .forEach(System.out::println);
    }
}

运行结果展示:
在这里插入图片描述
4. Stream流中map方法介绍

Stream<R> map();
	完成类型转换操作。

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

public class Test04 {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            int age = (int)(Math.random() * 50);
            list.add(new Person(i + 1,"lisi",age,false));
        }

        /**
         * Stream map 方法一般都是通过方法引用引入其他已经完成的功能模块来
         * 提升代码效率 在map方法中使用Lambda完成类型转换,代码效率较低。
         */
        Stream<Person> stream = list.stream();
        Stream<String> stringStream = stream.map(s -> s.toString());
        stringStream.forEach(System.out::println);
    }
}

运行结果展示:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值