返回顶部
首页 > 资讯 > 后端开发 > Python >Java流式操作之Collectors工具类操作指南
  • 473
分享到

Java流式操作之Collectors工具类操作指南

java 流式java流式操作java collectors工具类 2023-05-18 14:05:51 473人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录方法实践说明一、前提条件二、操作总结方法 ● maxBy:获取流中最大元素;minBy:获取流中最小元素 ● joining:合并,将流中的元素,以字符串的形式拼接起来 ● su

方法

● maxBy:获取流中最大元素;minBy:获取流中最小元素

● joining:合并,将流中的元素,以字符串的形式拼接起来

● summingInt:把流中的元素映射成int类型的元素,求和

● averagingInt:把流中的元素映射成int类型的元素,求平均值

● summarizingInt:把流中的元素映射成int类型的元素,获取描述信息

实践说明

一、前提条件

Person类

package com.example;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.context.annotation.Configuration;
import java.util.Objects;

public class Person implements Comparable<Person>{
    public String getName() {
        return name;
    }
    public Person setName(String name) {
        this.name = name;
        return this;
    }
    public int getAge() {
        return age;
    }
    public Person setAge(int age) {
        this.age = age;
        return this;
    }
    public int getScore() {
        return score;
    }
    public Person setScore(int score) {
        this.score = score;
        return this;
    }
    private String name;
    private int age;
    private int score;
    public Person(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }
    public Person() {
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }
    @Override
    public boolean equals(Object o) {
        //地址相同,为true
        if (this == o) return true;
        //为null,并且类型不一样,为false
        if (o == null || getClass() != o.getClass()) return false;
        //向下转型,再去比较属性值
        Person person = (Person) o;
        //如果属性值相同,最后的结果为true
        return age == person.age && score == person.score && Objects.equals(name, person.name);
        //return false;
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age, score);
    }
    @Override
    public int compareTo(Person o) {
        return this.getScore()-o.getScore();
    }
}

Data类

package com.example;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;

public class Data {
    public static ArrayList<Person> getData() {
        ArrayList<Person> personList = new ArrayList<>();
        personList.add(new Person("张三", 18, 90));
        personList.add(new Person("李四", 19, 100));
        personList.add(new Person("王五", 17, 60));
        personList.add(new Person("赵六", 18, 89));
        personList.add(new Person("孙七", 20, 96));
        personList.add(new Person("郑十", 20, 46));
        personList.add(new Person("周八", 20, 96));
        personList.add(new Person("周八", 20, 96));
        personList.add(new Person("吴九", 20, 45));
        personList.add(new Person("邓十一", 20, 35));
        personList.add(new Person("刘十二", 20, 99));
        personList.add(new Person("小十三", 20, 56));
        personList.add(new Person("小十三", 20, 56));
        return personList;
    }
}

二、操作

maxBy:获取流中最大元素;minBy:获取流中最小元素

public static void main(String[] args) {
        Stream<Person> stream = Data.getData().stream();
        //maxBy:获取流中最大元素;minBy:获取流中最小元素
        System.out.println(Data.getData().stream().collect(Collectors.maxBy((ele1, ele2) -> ele1.getScore() - ele2.getScore())));
        System.out.println(Data.getData().stream().collect(Collectors.minBy((ele1, ele2) -> ele1.getAge() - ele2.getAge())));
}

joining:合并,将流中的元素,以字符串的形式拼接起来

public static void main(String[] args) {
        Stream<Person> stream = Data.getData().stream();
        //joining:合并,将流中的元素,以字符串的形式拼接起来
        //将集合中person对象的姓名拼接成一个字符串
        System.out.println(Data.getData().stream().map(Person::getName).collect(Collectors.joining()));
        System.out.println(Data.getData().stream().map(Person::getName).collect(Collectors.joining("-")));
        System.out.println(Data.getData().stream().map(Person::getName).collect(Collectors.joining("-", "{", "}")));
}

summingInt:把流中的元素映射成int类型的元素,求和

public static void main(String[] args) {
        Stream<Person> stream = Data.getData().stream();
				//summingInt:把流中的元素映射成int类型的元素,求和
        System.out.println(Data.getData().stream().collect(Collectors.summingInt(Person::getScore)));
}

averagingInt:把流中的元素映射成int类型的元素,求平均值

public static void main(String[] args) {
        Stream<Person> stream = Data.getData().stream();
        //averagingInt:把流中的元素映射成int类型的元素,求平均值
        System.out.println(Data.getData().stream().collect(Collectors.averagingInt(Person::getScore)));
}

summarizingInt:把流中的元素映射成int类型的元素,获取描述信息

需求:将流中分数大于等于80的Person对象替换成他们的姓名

 public static void main(String[] args) {
        Stream<Person> stream = Data.getData().stream();
        //summarizingInt:把流中的元素映射成int类型的元素,获取描述信息
        IntSummaryStatistics collect = Data.getData().stream().collect(Collectors.summarizingInt(Person::getScore));
        System.out.println(collect);
        System.out.println(collect.getCount());
        System.out.println(collect.getSum());
        System.out.println(collect.getMax());
        System.out.println(collect.getMax());
        System.out.println(collect.getAverage());

输出结果:

总结

到此这篇关于Java流式操作之Collectors工具类操作的文章就介绍到这了,更多相关Java流式操作Collectors工具类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java流式操作之Collectors工具类操作指南

本文链接: https://lsjlt.com/news/212120.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java流式操作之Collectors工具类操作指南
    目录方法实践说明一、前提条件二、操作总结方法 ● maxBy:获取流中最大元素;minBy:获取流中最小元素 ● joining:合并,将流中的元素,以字符串的形式拼接起来 ● su...
    99+
    2023-05-18
    java 流式 java流式操作 java collectors工具类
  • Java8中Stream流式操作指南之入门篇
    目录简介正文1. 流是什么2. 老板,上栗子3. 流的操作步骤4. 流的特点5. 流式操作和集合操作的区别:总结简介 流式操作也叫做函数式操作,是Java8新出的功能 流式操作主要用...
    99+
    2024-04-02
  • Java协议字节操作工具类详情
    前言: 由于最近有解析协议的一些业务场景,需要用到一些字节操作工具,这里封装了一些比较常用的转换方法,测试后基本没有问题,可能一些比较偏门的数据会出现数据转换错误 int与数组相互转...
    99+
    2024-04-02
  • Java操作pdf的工具类itext怎么处理
    这篇“Java操作pdf的工具类itext怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java操作pdf的工具类i...
    99+
    2023-06-30
  • Java 8:Stream API 流式操作
    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java 8:Stream API Java 8 中的 Stream API 是一组...
    99+
    2023-08-16
    java python
  • hutool实战:IoUtil 流操作工具类(将内容写到流中)
    目录用途:IO工具类(将内容写到流中)使用场景项目引用方法摘要方法明细方法名称:cn.hutool.core.io.IoUtil.write(java.io.OutputStream...
    99+
    2024-04-02
  • Java微信跳一跳操作指南
    Java微信跳一跳操作指南,指哪挑哪。本文的思路是通过adb来控制手机进行操作,通过java写一个jframe覆盖在手机屏幕上,用鼠标获取跳的起点和终点,经过试验获取跳的jframe距离和按压时长的关系(线性关系),然后通过adb来根据计算...
    99+
    2023-05-30
  • Java操作pdf的工具类itext的处理方法
    目录一、什么是iText?二、引入jar三、iText常用类四、生成PDF步骤五、Java操作pdf的工具类itext六、更多的Java代码实例一、什么是iText? 在企业的信息系...
    99+
    2024-04-02
  • Java如何实现操作JSON的便捷工具类
    这篇文章将为大家详细讲解有关Java如何实现操作JSON的便捷工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:对于JSON数据格式的处理,自开发Java以来,已用过多种JSON的开源工具,用...
    99+
    2023-05-30
    java json
  • Django学习笔记之View操作指南
    Django的View 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个4...
    99+
    2024-04-02
  • Android数据库操作工具类分享
    本文实例为大家分享了Android数据库操作工具类的具体代码,供大家参考,具体内容如下HistoryDAOpublic class HistoryDAO { private DBConnection dbc = null; privat...
    99+
    2023-05-30
    android 数据库 工具类
  • 操纵文件:Java 文件操作的终极指南
    ...
    99+
    2024-04-02
  • Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]
    List item 文章目录 Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]1. Hutool中XmlUtil的使用简介2. Hutool中XmlUti...
    99+
    2023-09-01
    java xml 开发语言
  • Java中文件操作工具类fileUtil的示例分析
    小编给大家分享一下Java中文件操作工具类fileUtil的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package com.gc...
    99+
    2023-05-30
    java
  • Java日期操作方法工具类的示例分析
    这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java日期操作方法工具类,具体如下:package com.gclo...
    99+
    2023-05-30
    java
  • Java开发学习 Java数组操作工具
    看到网上的一段关于对数组操作的代码,觉得有用,在此备用。import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Rando...
    99+
    2023-05-31
    java 数组操作
  • spring boot学习笔记之操作ActiveMQ指南
    目录前言ActiveMQ 介绍队列(Queue)广播(Topic)同时支持队列(Queue)和广播(Topic)总结前言 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异...
    99+
    2024-04-02
  • PHP中的正则表达式操作指南
    PHP是一种非常流行的服务器端编程语言,其内置了强大的正则表达式操作功能,使得开发人员能够使用正则表达式轻松地对字符串进行处理和匹配。本文将介绍PHP中的正则表达式操作指南,包括如何创建正则表达式、如何使用正则表达式对字符串进行匹配和替换,...
    99+
    2023-05-21
    PHP 正则表达式 操作指南
  • Java文件操作之IO流 File类的使用详解
    File类概述 File类能新建、删除、重命名文件和目录,但不能访问文件内容本身,如果需要访问文件内容本身,则需要使用后续的输入/输出流。 要在Java程序中表示一个真实存在的文件或...
    99+
    2024-04-02
  • 基于Java手写一个好用的FTP操作工具类
    目录前言windows服务器搭建FTP服务工具类方法代码展示使用示例前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作