栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Stream API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Stream API

在java中Stream是一个接口

流的迭代 创建流

一.直接创建

import java.util.stream.Stream;

Stream stream = Stream.of("苹果", "哈密瓜", "香蕉", "西瓜", "火龙果");

二.由数组转化

String[] fruitArray = new String[] {"苹果", "哈密瓜", "香蕉", "西瓜", "火龙果"};
Stream stream = Stream.of(fruitArray);

三.由集合转化

List fruits = new ArrayList<>();
fruits.add("苹果");
fruits.add("哈密瓜");
fruits.add("香蕉");
fruits.add("西瓜");
fruits.add("火龙果");
Stream stream = fruits.stream();

流的迭代也是由foreach()方法但和集合中的foreach不一样(遍历数据是一样的)

流数据过滤

filter()方法

功能为对流中的数据进行过滤


方法参数是一个Lambda表达式,箭头后是条件语句,判断数据需要符合的条件也就是使用Lambda表达式告诉过滤器,需要那些符合条件的数据

pupils.stream()
    .filter(pupil -> pupil.getAverageScore() >= 80 && pupil.getViolationCount() < 1)
    .forEach(pupil -> {System.out.println(pupil.getName());});

这里的Lambda表达式略有不同,因为是条件语句所以表达式放在()而不是{}中

流数据映射

流中的map()方法就是映射,作用是用新的元素替换掉原来相同位置的元素,相当于每个对象都经历过依次转换

map()方法的参数是一个Lambda表达式,在语句块中对流中的每个数据进行计算处理,最后return返回的对象就是转换后的对象


优点:

映射后的对象类型可以与原始的不一致提供了灵活性和扩展性

流数据排序

用Stream API实现学生学号排序:

List students = new ArrayList();
students.add(new Student(111, "bbbb", "london"));
students.add(new Student(131, "aaaa", "nyc"));
students.add(new Student(121, "cccc", "jaipur"));

students.stream()
    // 实现升序排序
    .sorted((student1, student2) -> {
        return student1.getRollNo() - student2.getRollNo();
    })
    .forEach(System.out::println);

这里的student1指的是后一个元素,student2是前一个元素

流数据的摘取

对一组数字找出最大的前3个数字

numbers.stream()
    .sorted((n1, n2) -> n2 - n1)
    .limit(3)
    .forEach(System.out::println);

limit()方法的作用就是返回流前n个元素,n不能为负数

不是摘取任意位置,只能是流开头

流的设计思想

数据流的操作过程可以看做一个管道,管道由多个节点组成,每个节点完成一个操作

数据流输入这个管道,按照顺序经过各个节点

Stream的显著特点是:编程的重点不再是对象的运用而是数据的计算

Stream的特征为:函数式风格,弱化了面向对象的严格,完整的语法重心变为通过函数完成数据计算

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号