zjzcyList.stream().map(Pb_zjzcy::getZjid).collect(Collectors.toList()); 解释一下
zjzcyList.stream().map(Pb_zjzcy::getZjid).collect(Collectors.toList()); 解释一下
这段代码是使用Java 8的流式处理(Stream)对一个存储了对象的列表(zjzcyList)进行操作,并最终返回一个包含了列表中每个对象的Zjid属性的新列表。
具体的操作如下:
- 使用
stream()方法将zjzcyList转换为一个流(Stream)对象,以便对其中的元素进行处理。 - 使用
map()方法对流中的元素进行映射操作。在这里,Pb_zjzcy::getZjid表示对每个Pb_zjzcy对象调用getZjid方法进行映射。 - 使用
collect()方法将映射后的元素收集到一个新的列表中。在这里,Collectors.toList()表示将流中的元素收集到一个新的列表中。 - 最后,返回收集到的新列表。
总结起来,这段代码的作用是将zjzcyList中的每个对象的Zjid属性提取出来,并返回一个包含这些Zjid属性值的新列表。
java 使用流处理方式 取出List<Map<String,Object>> ycqzjList中每个元素的zjxh属性
要使用流处理方式取出List<Map<String, Object>> ycqzjList中每个元素的zjxh属性,可以按照以下步骤进行操作:
List<Map<String, Object>> ycqzjList = ...; // 假设这是你的原始列表List<Object> zjxhList = ycqzjList.stream() // 将列表转换为流.map(map -> map.get("zjxh")) // 提取每个元素的zjxh属性.collect(Collectors.toList()); // 将提取出的属性收集到一个新列表中
解释一下代码的含义:
- 首先,通过
.stream()方法将ycqzjList转换为一个流。 - 然后,使用
.map()方法对流中的每个元素进行映射操作。在这里,我们使用Lambda表达式来提取每个元素的zjxh属性,map -> map.get("zjxh")表示对每个Map对象调用get("zjxh")方法获取对应的属性值。 - 最后,使用
.collect(Collectors.toList())方法将提取出的属性值收集到一个新的列表zjxhList中。
现在,zjxhList列表中包含了每个ycqzjList元素的zjxh属性值。请注意,返回的列表类型为List<Object>,如果你知道属性值的具体类型,可以将其修改为相应的类型。
提示 Variable ‘map’ is already defined in the scope
如果出现"Variable ‘map’ is already defined in the scope"的错误提示,说明你在Lambda表达式中重复定义了变量名’map’。
这个错误通常会发生在你在流处理的不同步骤中使用了相同的变量名。为了解决这个问题,你可以在Lambda表达式中使用不同的变量名,以避免冲突。
例如,你可以修改代码如下:
List<Map<String, Object>> ycqzjList = ...; // 假设这是你的原始列表List<Object> zjxhList = ycqzjList.stream() // 将列表转换为流.map(m -> m.get("zjxh")) // 提取每个元素的zjxh属性.collect(Collectors.toList()); // 将提取出的属性收集到一个新列表中
在这个修改后的代码中,我将Lambda表达式中的参数名从’map’更改为’m’,这样就与之前的重复定义问题解决了。
请确保在Lambda表达式中使用唯一的变量名,以免产生命名冲突。
:: 和 -> 的区别
"::“和”->"是Java 8中引入的两种不同的符号,用于Lambda表达式和方法引用。它们在用法和含义上有一些区别。
-
::方法引用:
::用于引用已经存在的方法或构造函数。它提供了一种简洁的方式来直接引用方法,而不需要编写完整的Lambda表达式。方法引用可以使用以下三种格式:- 静态方法引用:
Class::staticMethod - 实例方法引用:
instance::instanceMethod - 构造函数引用:
ClassName::new
例如:
- 静态方法引用:
Integer::parseInt - 实例方法引用:
List::size - 构造函数引用:
ArrayList::new
- 静态方法引用:
-
->Lambda表达式:
->用于创建匿名函数,也称为Lambda表达式。它提供了一种简洁的语法来表示函数式接口的实现。Lambda表达式可以有零个或多个参数,并由"->"分隔参数列表和方法体。例如:
- 无参数的Lambda表达式:
() -> System.out.println("Hello") - 带参数的Lambda表达式:
(x, y) -> x + y - 带方法体的Lambda表达式:
(x, y) -> { int sum = x + y; return sum; }
- 无参数的Lambda表达式:
综上所述,"::“用于引用方法或构造函数,而”->"用于创建Lambda表达式。它们各自在不同的上下文中使用,并具有不同的用途和语法。
m -> m.get(“zjxh”) 解释一下
Lambda表达式 m -> m.get("zjxh") 的含义是,它接受一个参数 m,然后调用 m.get("zjxh") 来获取这个参数 m 中键为 "zjxh" 的值。
具体解释如下:
m:这是Lambda表达式的参数名,可以根据需求自定义。在这里,它表示ycqzjList中的每个元素(Map<String, Object>)。->:箭头符号将参数与Lambda表达式的主体隔开。m.get("zjxh"):这是Lambda表达式的主体部分,表示通过调用m的get方法来获取键为"zjxh"的值。
该Lambda表达式的整体作用是,将 ycqzjList 中的每个元素(Map<String, Object>)作为输入,然后返回其中键为 "zjxh" 的值。在使用流式处理时,这个Lambda表达式可以用于对列表中的每个元素进行映射操作,提取出 zjxh 属性的值。
->能不能换成::
在这种特定情况下,你无法使用方法引用 :: 来替换 Lambda 表达式 m -> m.get("zjxh")。
方法引用 :: 是用来引用已存在的方法或构造函数的,而 Lambda 表达式 m -> m.get("zjxh") 是一个具体的函数式接口的实现。
在这里,m.get("zjxh") 是通过调用 Map 对象的 get 方法来获取键为 "zjxh" 的值。而方法引用 :: 并不能直接引用对象的方法,只能引用类的静态方法、实例方法或构造函数。
因此,在这种情况下,Lambda 表达式 m -> m.get("zjxh") 是更合适和正确的选择,它可以正确提取 List<Map<String, Object>> 中每个元素的 "zjxh" 属性的值。
相关文章:
zjzcyList.stream().map(Pb_zjzcy::getZjid).collect(Collectors.toList()); 解释一下
zjzcyList.stream().map(Pb_zjzcy::getZjid).collect(Collectors.toList()); 解释一下 这段代码是使用Java 8的流式处理(Stream)对一个存储了对象的列表(zjzcyList)进行操作,并最终返回一个包含了列表中每个对象的Zji…...
车载总线系列——J1939 二
车载总线系列——J1939 二 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站…...
【C#学习笔记】引用类型(2)
文章目录 ObjectEqualsGetTypeToStringGetHashCode string逐字文本复合格式字符串字符串内插 StringBuilderStringBuilder 的工作原理StringBuilder提供的方法访问字符迭代字符查询字符 dynamic Object 支持 .NET 类层次结构中的所有类,并为派生类提供低级别服务。…...
【Rust 基础篇】Rust类函数宏:代码生成的魔法
导言 Rust是一门现代的、安全的系统级编程语言,它提供了丰富的元编程特性,其中类函数宏(Function-Like Macros)是其中之一。类函数宏允许开发者创建类似函数调用的宏,并在编译期间对代码进行生成和转换。在本篇博客中…...
Spring-1-透彻理解Spring XML的Bean创建--IOC
学习目标 上一篇文章我们介绍了什么是Spring,以及Spring的一些核心概念,并且快速快发一个Spring项目,实现IOC和DI,今天具体来讲解IOC 能够说出IOC的基础配置和Bean作用域 了解Bean的生命周期 能够说出Bean的实例化方式 一、Bean的基础配置 …...
【JAVA】类和对象
作者主页:paper jie的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精…...
jenkins准备
回到目录 jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构…...
【Rust】Rust学习
文档:Rust 程序设计语言 - Rust 程序设计语言 简体中文版 (bootcss.com) 墙裂推荐这个文档 第一章入门 入门指南 - Rust 程序设计语言 简体中文版 第二章猜猜看游戏 猜猜看游戏教程 - Rust 程序设计语言 简体中文版 (bootcss.com) // 导入库 use std::io; use s…...
Linux 常用命令之配置环境变量 PATH
PATH是系统环境变量中的一种,同时将一些二进制文件的绝对路径追加进去,则在系统终端中可以发现这些路径下的文件。 一. 环境变量设置 export PATH<二进制文件的绝对路径>:$PATH 以下为结合实际例子的操作 1、临时设置 打开一个终端执行如下命令 e…...
flask-----蓝图
1.引入蓝图 flask都写在一个文件中,项目这样肯定不行,会导致循环导入的问题,分目录,分包,使用蓝图划分目录。 2.使用蓝图 步骤如下: -1 实例化得到一个蓝图对象-order_blueBlueprint(order,__name__,tem…...
学习左耳听风栏目90天——第一天 1-90(学习左耳朵耗子的工匠精神,对技术的热爱)【洞悉技术的本质,享受科技的乐趣】
洞悉技术的本质,享受科技的乐趣 第一篇,我的感受就是 耗叔是一个热爱技术,可以通过代码找到快乐的技术人。 作为it从业者,我们如何可以通过代码找到快乐呢?这是一个问题? 至少目前,我还没有这种…...
后端登录安全的一种思路
PS:作者是小白能接触到的就只会这样写。勿喷。 前提 思路: 结合io流将登录token存储到配置文件中,不将token存储到浏览器端,从而避免盗取。 下面jwt的学习可以参考下这个: JWT --- 入门学习_本郡主是喵的博客-CSDN博客 JWT工具类 Component public class JWTtU…...
【深度学习_TensorFlow】激活函数
写在前面 上篇文章我们了解到感知机使用的阶跃函数和符号函数,它们都是非连续,导数为0的函数: 建议回顾上篇文章,本篇文章将介绍神经网络中的常见激活函数,这些函数都是平滑可导的,适合于梯度下降算法。 写…...
机器学习笔记之优化算法(七)线搜索方法(步长角度;非精确搜索;Wolfe Condition)
机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,Wolfe Condition] 引言回顾: Armijo \text{Armijo} Armijo准则及其弊端 Glodstein \text{Glodstein} Glodstein准则及其弊端 Wolfe Condition \text{Wolfe Condition} Wolfe Condi…...
十四.redis哨兵模式
redis哨兵模式 1.概述2.测试3.哨兵模式优缺点 redis哨兵模式基础是主从复制 1.概述 主从切换的技术方法:当主节点服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间内服…...
采用UWB技术开发的智慧工厂人员定位系统源码【UWB定位基站、卡牌】
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。UWB定位系统依托在移动通信,雷达,微波电路,云计算与大数据…...
当你软件测试遇上加密接口,是不是就不能测了?
相信大家在工作中做接口测试的时候,肯定会遇到一个场景,那就是你们的软件,密码是加密存储的。 那么这样的话,我们在执行接口的时候,对于密码的处理就开始头疼了。 所以,本文将使用jmeter这款java开源的接…...
Flink
Flink(Apache Flink)是一个开源的分布式流处理引擎和批处理框架。它是由 Apache 软件基金会维护的项目,旨在处理大规模数据的实时流式处理和批处理任务。Flink 提供了强大的流处理和批处理功能,具有低延迟、高吞吐量和高容错性&am…...
python入门常用操作
python常用操作 1、ndarry数组的切片2、print用法2.1格式化输出format2.2字符串格式化输出 3、均值滤波函数 1、ndarry数组的切片 例如一个5列的ndarry数组,想要获取第2列和第3列数据,可以用 #(1)用法1 data[:,1:3],…...
SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
要达到的目的:将某个包下使用了某个自定义注解(比如MyClassMapper)的类注册到Spring 容器。 一、自定义注解: package com.example.demo.service;import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy;Rete…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
学习 Hooks【Plan - June - Week 2】
一、React API React 提供了丰富的核心 API,用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素,JSX 会被编译成该函数…...
