Java Stream 流进行根据元素某一属性过滤计算其他属性实例

news2024/10/6 13:05:18

设计一个测试类Tuser

package org.example;

import com.alibaba.fastjson.annotation.JSONField;

import java.io.Serializable;

public class Tuser implements Serializable {

    //用户名
    private String name;
    //平台名称
    private String sys;
    //登录次数
    private int times;
    //一个合并属性的key
    @JSONField(serialize =false)
    private String key;

    public String getKey(){

        return name+sys;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSys() {
        return sys;
    }

    public void setSys(String sys) {
        this.sys = sys;
    }

    public int getTimes() {
        return times;
    }

    public void setTimes(int times) {
        this.times = times;
    }
}

编写Main测试类

package org.example;

import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class StreamTest {


    public static void main(String[] args) {
        Tuser t1 = new Tuser();
        t1.setName("tom");
        t1.setSys("web");
        t1.setTimes(5);

        Tuser t2 = new Tuser();
        t2.setName("jack");
        t2.setSys("web");
        t2.setTimes(10);

        Tuser t3 = new Tuser();
        t3.setName("lili");
        t3.setSys("app");
        t3.setTimes(12);


        Tuser t4 = new Tuser();
        t4.setName("lili");
        t4.setSys("app");
        t4.setTimes(9);

        Tuser t5 = new Tuser();
        t5.setName("tom");
        t5.setSys("web");
        t5.setTimes(10);


        List<Tuser> tuserList = new ArrayList<>();

        tuserList.add(t1);
        tuserList.add(t2);
        tuserList.add(t3);
        tuserList.add(t4);
        tuserList.add(t5);



        //找出登陆次数大于5次的数据
        List<Tuser> users = tuserList.stream().filter(tuser -> tuser.getTimes() > 5
        ).collect(Collectors.toList());

        System.out.println(JSONObject.toJSONString(users));

        //找出同一个人登录统一平台的总次数输出新列表
        List<Tuser> tusers = tuserList.stream()
                
                .collect(Collectors.toMap(Tuser::getKey, a -> a, (o1, o2) -> {
                    o1.setTimes(o1.getTimes() + o2.getTimes());
                    return o1;
                })).values().stream().collect(Collectors.toList());


        System.out.println(JSONObject.toJSONString(tusers));
    }


}

输出结果:

//找出登陆次数大于5次的数据

[{"name":"jack","sys":"web","times":10},{"name":"lili","sys":"app","times":12},{"name":"lili","sys":"app","times":9},{"name":"tom","sys":"web","times":10}]

//找出同一个人登录统一平台的总次数输出新列表
[{"name":"tom","sys":"web","times":15},{"name":"jack","sys":"web","times":10},{"name":"lili","sys":"app","times":21}]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用计算机视觉检测钓鱼攻击?

无论你是喜欢、还是厌恶、亦或害怕&#xff0c;以ChatGPT为代表的新兴人工智能&#xff08;AI&#xff09;平台&#xff0c;目前正在更加深入地迈向公共领域。它们不仅表现为各种聪明的聊天机器人&#xff0c;而且能够在幕后以多种创新方式被广泛使用。其中&#xff0c;最为典型…

audio2face 与ue5结合实时语音嘴型同步

audio2face部分 1.安装audio2face以及localserver 2.打开streamingplayer的demo场景 3.localhost/NVIDIA/Assets/Audio2face/blendshape_solve目录下找到male_bs_arkit.usd拖拽到场景 4.选中场景中的male_bs_arkit.usd将分页切换到A2F data convert分页 5.参数设置 6.设置…

mysql用户相关操作

一、如何查看系统存在多少用户&#xff1f; 相关命令&#xff1a; SELECT COUNT(*) FROM mysql.user; SELECT User FROM mysql.user; DESC mysql.user; 二、如何查看用户是否设置密码&#xff1f; 在 MySQL 中&#xff0c;用户密码是被加密的&#xff0c;不可以直接查看用户…

cmake构建一个项目,同时依赖一个静态库项目和一个动态库项目

目录切到build中&#xff0c;然后cmake ..&#xff0c;生成VS解决方案 chengChu 文件夹 SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) #windows构建动态库时 , 加上这个会生成dll文件的同时生成lib文件&#xff0c;否则只…

FirmAE源码粗读(五)

文章目录 简介参考阅读libnvramsem系列函数sem_getsem_locksem_unlock nvram_init系列函数nvram_initnvram_set_default 感言 简介 鸽王来咯 这一篇写的是FirmAE中源于firmadyne的libnvram&#xff08;经过了一定修改&#xff09;&#xff0c;不得不说这一部分是很有意义的工作…

国产32位MCU低成本烟机变频风机方案

家用油烟机主要由风机系统&#xff0c;控制系统&#xff0c;滤油装置&#xff0c;外壳和悬吊装置组成&#xff0c;其中风机系统是油烟机的心脏&#xff0c;通常由电机和叶轮组成&#xff0c;一台油烟机功率的大小&#xff0c;也是由风机系统决定的&#xff0c;控制系统是烟机最…

JVM-垃圾回收器

垃圾回收器 Serial 新生代垃圾回收器&#xff0c;单线程&#xff0c;会产生STW&#xff08;Stop The World&#xff09;&#xff0c;采用拷贝算法。 它在停止线程时&#xff0c;并不是直接将线程强行停止&#xff0c;而是等线程运行到一个安全点&#xff08;Safe Point&…

超级实用!详解Node.js中的lodash模块和async模块

文章目录 7. lodash 模块安装 Lodash数组处理对象处理函数式编程 8. async 模块安装 Async异步流程控制串行执行&#xff08;Series&#xff09;并行执行&#xff08;Parallel&#xff09;循环迭代&#xff08;Each&#xff09; 控制流程和错误处理瀑布流控制&#xff08;Water…

强化学习:策略梯度法

策略梯度法的思路 之前我们是用表格的形式来表达策略&#xff0c;现在我们同样可以用函数来表达策略。之前学的所有的方法都是被称为 value-based&#xff0c;接来下学的叫 policy-based 。接下来我们来看一下 策略梯度法的思路。之前学的的策略全都是用表格来表示的&#xff0…

win 安装 C++运行环境 - MinGW

目录 一、下载二、安装四、检查是否安装成功五、参考文章 一、下载 官网地址&#xff1a;https://www.mingw-w64.org/downloads/ 1.1点击【MingW-W64-builds】 1.2点击【Github】 1.3下载 如果下载太慢&#xff0c;可以使用GitHub Proxy 代理加速 (ghproxy.com) 二、安装 …

c++为什么支持函数重载?

前言 在c语言中&#xff0c;函数名是不可以重复的&#xff0c;在同一作用域中函数名称都是唯一的。这也使得我们的函数调用充满了种种麻烦。 而c则支持通过函数重载解决了这个问题 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的…

如何在Microsoft Excel中移动列的位置

若要在 Excel 中移动列,请使用 shift 键或“插入剪切单元格”。你还可以神奇地更改所有列的顺序。 一、Shift 键 要在不覆盖现有数据的情况下快速移动 Excel 中的列,请按住键盘上的 shift 键。 移动单列: 1、首先,选择一列。 2、将鼠标悬停在所选内容的边界上。此时会出…

建立本地题库

建立试题库文件json 第一步&#xff1a; 按标准格式保存试题到本地,文件名为.json. import json import osimage_path os.path.join(C:\\, Users, 123, PycharmProjects, pythonProject1, test01, imges, jxn_0900.png)# 准备要保存的数据 data [{"id": 1,"…

基于深度学习的高精度动物园动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度动物园动物&#xff08;水牛、斑马、大象、水豚、海龟、猫、奶牛、鹿、狗、火烈鸟、长颈鹿、捷豹、袋鼠、狮子、鹦鹉、企鹅、犀牛、羊、老虎&#xff09;检测识别系统可用于日常生活中或野外来检测与定位动物园动物&#xff0c;利用深度学…

【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

Java可执行命令详解之jar 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式&#xff1a;创建jar文件3.1.1 参数&#xff1a;-cf3.1.2 参数&#xff1a;-tf3.1.3 参数&#xff1a;-i3.1.4 参数&#xff1a;-v3.1.5 参数&#xff1a;-e 3.2 运行jar文件 4️⃣ 应用场景5️⃣ 注…

Qt实现电子商城系统

用Qt实现的电子商城系统&#xff1a; 1.功能包括&#xff1a; 1)管理员账户 2)用户管理 3)用户登录 4)商品管理 5)商品出售 6)软件打包 2.商品包括&#xff1a;程序源码、开发教程和程序讲解&#xff1b;也可以根据需求进行功能更改 3.试用链接 链接&#xff1a;https://pan.…

华硕无畏14pro设置指纹登录

正常的流程如下 打开一个文件夹&#xff0c;在左侧找到此电脑&#xff0c;点击右键&#xff0c;找到属性 在搜索框中搜索&#xff1a;设置指纹登录 找到指纹识别&#xff0c;左键点击即可展开&#xff0c;点击&#xff1a;添加手指 点击&#xff1a;开始 输入PIN&#xff08;开…

Oracle Linux 迷途知返

Oracle Linux 6.9 发布了。Oracle 已经宣布发布 Oracle Linux 6 发行版的更新了。 新版本 Oracle Linux 6 Update 9&#xff0c;包括多个已更新的内核&#xff0c;以及两个新的 "Unbreakable Enterprise Kernel" 包和一个 "Red Hat Compatible Kernel" 包…

SAP 后台配置之FM基金管理篇

SAP FM基金管理后台配置及应用 1 二话不说先上后台配置&#xff0c;能跑通为先1.1 基础设置1.1.1 维护财务管理区1.1.2 分配财务管理区1.1.3 激活全局基金管理功能1.1.4 定义全局参数1.1.5 定义编号区间编号并分配1.1.6 创建更改层次变式1.1.3 激活科目分配元素1.1.4 设置允许空…

3 款适合您手机或平板电脑的最佳 Android 和 iOS 修复工具

让我们面对现实&#xff1a;技术不可能总是完美的&#xff0c;您的智能手机也是如此&#xff0c;尽管更容易爱上它。毕竟&#xff0c;它只是一台机器&#xff01; 无论您使用的是 Android 还是 iOS 系统的智能手机或平板电脑&#xff0c;当您第一次带回家时&#xff0c;它都能…