【java】stream流使用教程 详细版

Stream流处理数据好处:基于新的流,不会改变原始数据且可以链式调用多个方法

1、引用Stream流  基于java8

import java.util.stream.Collectors;

2.常见方法

        toArray  将List列表转换为数组Array类型

public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "orange", "mango"));
        // 将 List 转换为数组
        String[] array = list.stream().toArray(String[]::new);
}

        Arrays.stream 方法结合collect 将Array转换为List

public static void main(String[] args) {
        String[] array = {"apple", "banana", "orange", "mango"};
        // 将数组转换为列表
        List<String> list = Arrays.stream(array).collect(Collectors.toList());
}

3-1.常用的处理数据方法

 1.allMatch、noneMatch、allMatch  用法相同,且不能连用 

public class Main {
    public static void main(String[] args) {
        Test p1 = new Test(1, 10);
        Test p2 = new Test(2, 12);
        Test p3 = new Test(3, 14);
        Test p4 = new Test(4, 12);
        List<Test> list = Arrays.asList(p1, p2, p3, p4);   

        // 1.noneMatch: 没有任何匹配的 
        boolean noneMatchResult = list.stream().noneMatch(item -> item.getAge() < 0);
        // 2.allMatch: 所有的都匹配
        boolean noneMatchResult = list.stream().allMatch(item -> item.getAge() < 0);
        // 3.anyMatch: 任何一个匹配即可
        boolean noneMatchResult = list.stream().anyMatch(item -> item.getAge() < 0);            
}

 2.count、min、max 用法相同,且不能连用

public class Main {
    public static void main(String[] args) {
        Test p1 = new Test(1, 10);
        Test p2 = new Test(2, 12);
        Test p3 = new Test(3, 14);
        Test p4 = new Test(4, 12);
        List<Test> list = Arrays.asList(p1, p2, p3, p4);   

        // 1. count: 查出这组List的数量
        long count = list.stream().count();
        // 2. min: 某个最小的值
        Test minAgePerson = list.stream().min((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())).orElse(null);
        // 3. max: 某个最大的值
        Test maxAgePerson = list.stream().max((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())).orElse(null);           

}

3.findFirst、findAny  用法相同,且不能连用

public class Main {
    public static void main(String[] args) {
        Test p1 = new Test(1, 10);
        Test p2 = new Test(2, 12);
        Test p3 = new Test(3, 14);
        Test p4 = new Test(4, 12);
        List<Test> list = Arrays.asList(p1, p2, p3, p4);   

        // 1. findFirst: 找到第一个元素
        Test firstPerson = list.stream().findFirst().orElse(null);    
        // 2. findAny: 找到任意一个元素
        Test anyPerson = list.stream().findAny().orElse(null);      
}

 4. 常用的几种可以连用的方法

  • isPresent: 是否存在

  • isEmpty:是否为空
  • or 或者
  • ifPresent: 有值之后处理
  • ifpresentOrElse 
  • sorted 默认正序
  • reversed 倒
  • limit(n) 截取前n个
  • skip(n) 跳过前n个,返回一个新的流

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值