4.从流中获取结果(流的终结)

在对一个集合通过流处理完后,我们需要回去流处理的结果,这时我们就可以使用一系列方法进行获取。
注意:使用终结方法后,这个流将关闭,不允许再被使用。

代码就是最好的学习方式,下面请看代码:

package StreamStudy.Exa04;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 流的终结:从流中获取结果集
 * 涉及的API:count,max,min,collect,findFirst,findAny,anyMatch,allMatch,noneMatch
 */
public class StreamEnd {
    
    
    public static void main(String[] args) {
    
    
        String content="hello world wo cao ni ma ma ni wo";
        String[] contents=content.split("\\PL+");
        Stream<String> words= Stream.of(contents);
        //如何从流数据中获得的答案,流的约简是方式之一,约简就是获得流里数据集的统计级别的信息
        //获取流中的元素个数
        long count=words.count();
        System.out.println("流words中元素个数为:"+count);

        //获得流中最大值和最小值  compareToIgnoreCase() 方法用于按字典顺序比较两个字符串,不考虑大小写
        Optional<String> max=Stream.of(contents).max(String::compareToIgnoreCase);
        System.out.println(max.get());
        Optional<String> min=Stream.of(contents).min(String::compareToIgnoreCase);
        System.out.println(min.get());


        //Optional类型是一种更好的表示缺少返回值的方式,它是一种包装器对象,要么包装了类型T的对象,要么没有包装任何对象
        //有效的使用Optional的关键是要使用这样一个方法:它在值不存在的情况下会产生一个可替代物
        Optional<String> test=Stream.of(contents).filter(s->s.length()<1).findFirst();
        String result=test.orElse("我是替代字符串");
        System.out.println(result);
        //我们还可以调用代码来计算默认值
        String result2=test.orElseGet(()-> Locale.getDefault().getDisplayName());
        System.out.println(result2);
        //我们还可以在没有任何值的情况下抛出异常
        //String result3=test.orElseThrow(IllegalAccessError::new);

        //有效使用Optional的另一种方法是只有在其存在的情况下才消费该值
        List<String> result4=new ArrayList<>();
        test.ifPresent(result4::add);
        System.out.println(result4.size());

        //如果我们想要获得流中随机的一个元素我们可以使用findAny元素
        Optional<String> findAny=Stream.of(contents).findAny();
        System.out.println(findAny);

        //如果我们想要提取流中的元素组成列表我们可以
        List<String> list=Stream.of(contents).collect(Collectors.toList());

        //如果只想知道是否存在匹配的值,可以使用anyMatch
        boolean flag=Stream.of(contents).anyMatch(s->s.equals("hello"));
        System.out.println(flag);
        //如果想知道是否所有元素都满足某个条件可以使用allMatch
        flag=Stream.of(contents).allMatch(s->s.equals("hello"));
        System.out.println(flag);
        flag=Stream.of(contents).noneMatch(s->s.equals("000"));
        System.out.println(flag);

    }
}

在这里插入图片描述

Supongo que te gusta

Origin blog.csdn.net/c1776167012/article/details/121879349
Recomendado
Clasificación