最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Stream<T>接口用法示例

Java基础 太平洋学习网 浏览 评论

从Java8开始这个Stream<T>接口方法使用非常的广泛并且很受欢迎,其中最常见的Stream接口方法有以下这几种:

// 匹配Stream里面的所有数据是否都符合Predicate里面定义的表达式,符合则返回true,否则返回false

boolean allMatch(Predicate<? super T> predicate)

// 匹配Stream里面的任一条数据是否符合Predicate里面定义的表达式,符合则返回true,否则返回false

boolean anyMatch(Predicate<? super T> predicate)

// 匹配Stream里面的是否没有符合Predicate里面定义的表达式,没有符合则返回true,有符合则返回false

boolean noneMatch(Predicate<? super T> predicate)

// 过滤Stream里面的数据,相当于if语句,过滤条件是Predicate里面定义的表达式

Stream<T> filter(Predicate<? super T> predicate)

// 遍历Stream里面的数据

void forEach(Consumer<? super T> action)

// 按自然顺序从小到大排序Stream里面的数据

Stream<T> sorted()

// 按Comparator比较器里面定义的方法来比较Stream里面的数据,适合比较对象,或者从大到小时使用

Stream<T> sorted(Comparator<? super T> comparator)

// 获取Stream里面的最大数值或自定义对象

Optional<T> max(Comparator<? super T> comparator)

// 获取Stream里面的最小数据或自定义对象

Optional<T> min(Comparator<? super T> comparator)

提示:

如果不懂Predicate<? super T>接口则点击此处:了解Predicate接口的简单使用

如果不懂Comparator<? super T>比较器的使用,可以点击此处:了解Comparator的使用方法

下面是Stream<T>接口方法的使用示例代码,可以更好的了解上面这些方法的使用:

public class Children extends Parents {

    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();
        list.add("test1");
        list.add("test2");
        list.add("test3");
        list.add("test4");
        list.add("test5");
        boolean res1 = list.stream().allMatch(n -> n.contains("test")); //list元素是否都包含test字符
        boolean res2 = list.stream().anyMatch(n -> n.contains("5")); //是否有一个元素包含5字符
        boolean res3 = list.stream().noneMatch(n -> n.contains("5")); //是否没有元素包含5字符
        //结果:true===true===false
        System.out.println(res1 + "===" + res2 + "===" + res3); 

        list.stream().forEach(System.out::println); //forEach表示遍历list集合
        
        //filter表示过滤元素,是否里面有元素等于test1,如果有则返回并在Consumer里面对字符进行处理
        list.stream().filter(n -> n.equals("test1")).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s + ": test1"); //拼接输出test1: test1
            }
        }); 
        
        System.out.println("------Stream的sorted排序方法--------");
        List<Integer> list2 = new ArrayList<Integer>();
        list2.add(50);
        list2.add(20);
        list2.add(10);
        list2.add(40);
        list2.add(30);
        //按自然顺序从小到大排列
        list2.stream().sorted().forEach(System.out::println);  

        System.out.println("--------------");
        //按Comparator比较器比较,从大到小排列并遍历输出
        list2.stream().sorted(new Comparator<Integer>() {
            @Override
            public int compare(Integer num1, Integer num2) {
                return num2.compareTo(num1);
            }
        }).forEach(System.out::println);

        System.out.println("------Stream的max与min方法--------");
        //分别获取list2里面的最大值与最小值
        Integer max = list2.stream().max(Integer::compareTo).get();
        Integer min = list2.stream().min(Integer::compareTo).get();
        System.out.println("List2最大值:"+max+"====最小值:"+min);

        //根据年龄大小来获取自定义对象集合里面的最大值与最小值
        List<Parents> list3 = new ArrayList<Parents>();
        list3.add(new Parents("张三",40));
        list3.add(new Parents("李四",20));
        list3.add(new Parents("王五",60));
        list3.add(new Parents("赵六",46));
        list3.add(new Parents("李白",70));
        Parents maxAgeParents = list3.stream().max(Comparator.comparingInt(Parents::getAge)).get();
        Parents minAgeParents = list3.stream().min(Comparator.comparingInt(Parents::getAge)).get();
        //输出maxAgeParents和minAgeParents两个对象此处省略
    }
}

当然了,Stream接口里面还有很多非常有用的方法,这里不再列举了哦!

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/970.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论