java8-stream 常用操作

简介: java 8 stream 流的操作总是记不住,每次都忘,需要每次百度,这次索性都记录下来,并将常用的网站也放在这里,已供以后学习工作使用

java8-stream操作


java 8 stream 流的操作总是记不住,每次都忘,需要每次百度,这次索性都记录下来,并将常用的网站也放在这里,已供以后学习工作使用


stream 简单介绍

Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式)

Stream流是从支持数据处理操作的源生成的元素序列,源可以是数组、文件、集合、函数。流不是集合元素,它不是数据结构并不保存数据,它的主要目的在于计算,能让代码更加简洁,极大地简化了集合的处理操作,提高了开发的效率和生产力

Stream API 借助于同样新出现的 Lambda 表达式,而且使用并发模式,极大的提高编程效率和程序可读性。


Stream流其实就相当于是工厂上的流水线,后面会对数据更好的进行操作,如打印,过滤等等。说到底把它比作是工厂上的流水线还是很形象的。


常用的stream流实操网站


www.yuque.com/liyufei/ia5…

blog.csdn.net/qq_42003527…


具体实践


创建手机类



@Data
@AllArgsConstructor
public class Phone {
    private String name;
    private String brand;
    private Integer price;
}

开始常用stream操作:


public class StreamService {
    static List<Phone> list = new ArrayList<>();
    static {
        list.add(new Phone("小米 13", "xiaomi", 4599));
        list.add(new Phone("小米 12", "xiaomi", 2099));
        list.add(new Phone("苹果 14", "apple", 5399));
        list.add(new Phone("苹果 13", "apple", 2399));
        list.add(new Phone("华为 P60", "huawei", 4488));
        list.add(new Phone("华为 P40", "huawei", 2088));
        list.add(new Phone("vivo X90", "vivo", 2699));
    }
    public static void main(String[] args) {
        // 找出价格大于3000的手机,有三个
        List<Phone> collectFilter = list.stream().filter(phone -> phone.getPrice() > 3000).collect(Collectors.toList());
        collectFilter.stream().forEach(System.out::print);
        // 取所有的手机名称
        List<String> collect = list.stream().map(Phone::getName).collect(Collectors.toList());
        // 判断是否有手机的价格超过8000
        boolean b = list.stream().allMatch(phone -> phone.getPrice() > 8000);
        // 取最贵的一台手机
        Phone phone = list.stream().max(Comparator.comparing(Phone::getPrice)).get();
        Phone phone1 = list.stream().collect(maxBy(Comparator.comparingInt(Phone::getPrice))).get();
        // 取每种品牌中最贵的一台手机
        ArrayList<Phone> arrayList = list.stream().sorted(Comparator.comparing(Phone::getPrice).reversed())
                .collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(Phone::getBrand))), ArrayList::new));
        // 取所有手机的价格总和
        Integer sum1 = list.stream().map(Phone::getPrice).reduce(Integer::sum).get();
        Integer sum2 = list.stream().collect(summingInt(Phone::getPrice));
        // 取最贵的手机价格
        Integer max = list.stream().map(Phone::getPrice).reduce(Integer::max).get();
        // 取所有手机价格平均值
        Double collect1 = list.stream().collect(averagingInt(Phone::getPrice));
        // 取所有手机价格的最大值,最小值,总和等信息
        IntSummaryStatistics collect2 = list.stream().collect(summarizingInt(Phone::getPrice));
        // 将所有手机名称已逗号分割成字符串
        String collect3 = list.stream().map(Phone::getName).collect(joining(","));
        // 根据品牌分组
        Map<String, List<Phone>> collect4 = list.stream().collect(groupingBy(Phone::getBrand));
        // 分组求和,求每种手机的价格总和
        Map<String, Integer> collect5 = list.stream().collect(groupingBy(Phone::getBrand, summingInt(Phone::getPrice)));
    }
}
目录
相关文章
|
4月前
|
SQL 分布式计算 Java
Java Stream 相关操作
Java Stream 相关操作
13 0
|
4月前
|
SQL Java 数据处理
Java 8 - Stream流骚操作解读
Java 8 - Stream流骚操作解读
51 1
|
5月前
|
存储 SQL 分布式计算
java Stream编程笔记
java Stream编程笔记
34 0
|
10月前
|
Java API 开发者
【Java】Stream流常用操作以及Optional入门
【Java】Stream流常用操作以及Optional入门
90 0
|
11月前
|
Java
java stream()简单使用
java stream()简单使用
74 1
|
12月前
|
Java
Java 8 - Stream实战
Java 8 - Stream实战
88 0
Java8的Stream神器
Java8的Stream神器
|
Java
Java:JDK8中Stream的用法
Java:JDK8中Stream的用法
93 0
|
安全 Java 程序员
Java的Stream操作详解
Java的Stream操作详解
32028 1
Java的Stream操作详解
|
存储 Java
Java8流是什么?有哪些常用操作?
Java8流是什么?有哪些常用操作?
53 0