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…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
