groovy中对象的比较以及非空判断

PCI-Express、MiniPCIe、ExpressCard接口转换说明/引脚互换关系 通过引脚PIN互换可以在PCI-Express、MiniPCIe、ExpressCard之间切换不同的接口;提供接口引脚表和标准尺寸图。 阅读详情
AI摘要

本文介绍Groovy语言中的对象比较方法,包括字符串、Map和List集合的比较,以及如何判断对象是否为空。同时展示了Groovy语言在这些操作上的简洁性和高效性。

上几次曾经说过groovy中字符串以及集合的基本使用,但是有时我们可能要对这些对象进行比较,这次就围绕这个来分享我学到的东西,分享之前来补充一下in的使用,在前面几次的分享中其实已经使用过但是没有专门拿出来说过

1.in的使用

in一般和for一起配合使用,产生的效果类似foreach,来看下吧

def arr=["上海","南京","福州"]
for(item in arr){
      println  item
}
上面的代码可以遍历list集合


2.groovy对象的比较

这种情况使用就比较多了,例如字符串、map集合、List集合的比较,来看看下面的这段代码:

 //groovy对象的比较比较---(重要)
        //1.字符串比较
        def str1="Hello World1"
        if("Hello World"==str1){
            println "Hello World"
        }else{
            println "不匹配"
        }
        //2.map集合的比较(list集合也可以这样比较)----(重要)
        def m1=["name":"李明","age":20]
        def m2=["name":"李明","age":21]
        def m3=["name":"李明","age":21]
        if(m1==m2){
            println "m1和m2匹配"
        }else{
            println "m1和m2不匹配"
        }

特别是字符串的比较,是不是比java要简洁的多呢


如果要比较两个对象的引用是否相同在groovy中可以使用is,如下所示:

  //判断对象的引用是否相同---(重要)
  println m1.is(m3)

3.if判断对象是否为空

groovy中判断对象是否为空,直接if(对象){}即可,这种便捷真的很强大


        //if判断对象是否为空
        def m5=["name":"Lucy"]
        //判断map集合是否为空(字符串或list都可以这么判断)----(重要)
        if(m5){
           println "m5不为空"
        }

但是这种写法还是不够简洁,groovy还提供了一种更简单的写法即 ?.

//更为方便的判断对象是否为空的操作符 ?.-------(重要)
println "${m5?.name}"

学了这段时间的groovy觉得收获还是很大的,下次打算分享一点groovy的特色知识MOP。


全部代码:

package org.lxh
public class UseRange{

	public static void main(def args){
        //定义一个range
		def range=1..15
		println range.contains(10);
		println range.from;
		println range.to;
        //使用range输出7天的日期
        def today = new Date()
        def nextWeek = today + 7
        (today..nextWeek).each{
            println it
        }
        //in的用法------(重要)
        def arr=["上海","南京","福州"]
        for(item in arr){
           println  item
        }
        //groovy对象的比较比较---(重要)
        //1.字符串比较
        def str1="Hello World1"
        if("Hello World"==str1){
            println "Hello World"
        }else{
            println "不匹配"
        }
        //2.map集合的比较(list集合也可以这样比较)----(重要)
        def m1=["name":"李明","age":20]
        def m2=["name":"李明","age":21]
        def m3=["name":"李明","age":21]
        if(m1==m2){
            println "m1和m2匹配"
        }else{
            println "m1和m2不匹配"
        }
        //判断对象的引用是否相同---(重要)
        println m1.is(m3)
        //if判断对象是否为空
        def m5=["name":"Lucy"]
        //判断map集合是否为空(字符串或list都可以这么判断)----(重要)
        if(m5){
           println "m5不为空"
        }
        //更为方便的判断对象是否为空的操作符 ?.-------(重要)
        println "${m5?.name}"
	}
	
}


6.3 节深度拆解:Hermes Agent 多 Agent 协同执行链路的 4 层设计逻辑 拆解 Hermes 多 Agent 协同的 4 层工程化设计(协议层、编排层、执行层、适配层),聚焦协议层的强约束消息 Schema 如何解决 Agent 间语义不一致问题,并提供 `soul.md` 配置、GLM-4.7Flash 结构化输出验证及 v0.13.0/v0.14.0 版本实操避坑指南 阅读详情

相关推荐

UE5网络模块实战:属性复制、RPC与联机开发踩坑指南

多人联机开发中,网络同步是核心难题。UE5网络模块以服务器权威为基础,通过Actor复制、RPC和所有权机制实现多端状态一致。理解属性复制与OnRep回调、区分Server/Client/Multicast RPC的适用场景,是构建稳定联机架构的关键。本文结合数字孪生与多端协作场景,探讨如何将渲染与逻辑分离,并针对打包后网络失效、端口防火墙、崩溃排查等工程实践问题给出解决方案。通过蓝图接口解耦表现层,利用C++创建StaticMesh组件实现服务器逻辑与客户端表现分离,同时注意专用服务器不加载渲染依赖(如D

weixin_29010003的博客 272

Groovy Tip 3 如何在if条件语句中判断对象为空

            Groovy Tip 3 如何在if条件语句中判断对象为空 在Java语言编程中,对对象的非空判断是一个永恒的话题。例如,我们经常需要对一个字符串进行如下的判断:     if(str!=null&&!str.equals(""))     {        ...... }输入这样的语句的确使人生厌,而且有时候还会忘掉输入“!str.equal

软件的信雅达 1万+

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃

本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。

i3j4k5的博客 288

Groovy开发中参数判空操作;

个人groovy开发工具分享

OGtwelve的博客 842

反激电源反馈环路设计:从TL431+PC817原理到动态补偿实战

本文深入解析了反激电源中由TL431和PC817构成的经典反馈环路设计。从静态工作点计算到动态补偿实战,详细阐述了如何通过Type II补偿网络优化环路稳定性与动态响应,并分享了应对光耦CTR离散性、布局噪声等常见调试难题的实用技巧,帮助工程师设计出高性能、高可靠的开关电源。

moon9的博客 699

DIY一个SM2262ENG 2TB Nvme固态硬盘,慧荣SM2262EN主控

网友订做的 材料: 慧荣科技的62en,2片1G 三星DDR4缓存,4颗PF29F04T2AOCTH1,8CE B17A。SM2262EN属于慧荣第二代PCIe SSD主控,支持PCIe G3×4通道和全新的NVMe 1.3规范、8个NAND通道设计,并提供完整固件设计,最大循序读取速度高达3.5GB/s,循序写入速度达3.0GB/s,随机读写则高达420K IOPS和420K IOPS。此外,还采用目前最先进的低功耗设计,无论是在待机还是在工作状态下,均展现超低功耗,有效减少30%的功耗,满足用户追求超

m0_55207244的博客 1万+

Groovy Tip 4 对象非空判断及“?”运算符

                       Groovy Tip 4 对象非空判断及“?”运算符 对于一个Domain类对象,如下面的例子:class Empl{        String name} 我们需要对它进行操作,比如打印“name”属性的值,我们首先要对它进行非空判断,如下:    def em    if(em)    {     

软件的信雅达 8278

2026年AI技能进阶指南:从提示词工程到智能体开发实战

提示词工程作为AI时代的基础沟通技能,其核心原理是通过系统化的交互方法论实现与大模型的高效对话。这项技术通过明确性、具体性和可操作性的设计原则,显著提升了AI生成内容的质量和实用性。在工程实践层面,提示词工程已经发展出角色扮演、步骤分解等成熟模式,广泛应用于代码生成、技术方案设计等场景。随着AI智能体开发的兴起,提示词工程进一步演化为定义智能体身份认知和行为规范的系统接口设计,成为构建自主AI系统的关键技术基础。掌握从基础提示词到智能体开发的完整技能栈,能够帮助开发者在AI技术浪潮中保持核心竞争力。

weixin_33139275的博客 333

Gradle学习:Groovy基本使用

一、概述 Groovy是一种动态语言。它和Java一样,也运行于Java虚拟机中。它基于Java并扩展了Java。 动态语言,是指运行时才确定数据类型的语言,变量在使用之前无需申明类型。例如JavaScript、Python。相对的,编译时变量的数据类型就可以确定的语言为静态语言,例如Java、C++。 它是一种面向对象的语言,同时也能作为一种纯粹的脚本语言。 Groovy内部会把代码编译为Java class文件然后启动虚拟机来执行(实际上,由于Groovy Code在真正执行的时候已经变成了

KWMax 660

达梦--利用存储过程与定时任务实现数据自动迁移

本文详细介绍了在达梦数据库中如何结合存储过程与定时任务实现数据自动迁移。通过一个电商订单归档的实战案例,阐述了从设计表结构、编写具备异常处理和幂等性的存储过程,到配置DBMS_SCHEDULER定时任务的全流程。该方法能有效替代手动脚本,确保数据同步任务的稳定、准确与自动化执行,适用于报表准备、数据备份等多种场景。

weixin_29261711的博客 430

华为云计算——FusionCompute创建虚拟机

华为云计算——FusionCompute创建虚拟机

jks212454的博客 3676

groovy if 判断字符串_Groovy Tip 3 如何在if条件语句中判断对象为空

匿名用户1级2013-11-12 回答Groovy Tip 3 如何在if条件语句中判断对象为空在Java语言编程中,对对象的非空判断是一个永恒的话题。例如,经常需要对一个字符串进行如下的判断:if(str!=null&&!str.equals("")){......}输入这样的语句的确使人生厌,而且有时候还会忘掉输入“!str.equals("")”语句中的“!”导致代码出现逻辑...

weixin_39827034的博客 2541

微信小程序 - error_msg:net::ERR_CONNECTION_RESET“(“errno“:600001,“errMsg“:“uploadFile:fail errcode:-101)

"errno":600001,"errMsg":"uploadFile:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET"微信小程序,微信小程序wx.uploadFile报错,uniapp微信小程序uni.uploadFile上传文件报错,微信小程序调用wx.uploadFile返回错误ERR_CONNECTION_RESET,如何解决这个问题,上传图片出现报错,小程序上传视频报错,上传文件出现报错,如何

🏆 前端领域优质创作者 5414

Groovy中对象比较的奥秘

使用==和equals()方法来比较这两个对象时,结果都是true,因为它们的num属性相等。但是,使用is()方法来比较它们时,结果是false,因为myClass1和myClass2是两个不同的对象实例,它们的引用不同。这是因为num1和num2虽然数值相同,但它们是两个不同的对象实例,它们在内存中占据不同的位置,所以它们的引用是不同的。这是因为BigDecimal类的equals()方法是根据数值的相等性来定义的,所以当两个BigDecimal对象的数值相等时,它们就被认为是相等的。

m0_62153576的博客 606

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

groovy条件语句判空

     Groovy  如何在if条件语句中判断对象为空 在Java语言编程中,对对象的非空判断是一个永恒的话题。例如,我们经常需要对一个字符串进行如下的判断:     if(str!=null&&!str.equals(""))     {        ...... }输入这样的语句的确使人生厌,而且有时候还会忘掉输入“!str.equals("")”语句中的“!”导致代码出...

csy_system的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

groovy if 判断字符串_比较groovy中的版本字符串

Hey I have created a Groovy script that will extract the version numbers of some folder. I would then like to compare the version numbers and select the highest.I got my script to run through the dir ...

weixin_39575047的博客 1120

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Groovy 真值规则

目录 1. 布尔表达式 2. 集合和数组 3. 匹配器(Matcher) 4. 迭代器和枚举 5. 映射 6. 字符串 7. 数字 8. 对象引用 9. 使用 asBoolean 方法定制真值规则 Groovy 通过下面这些规则来决定要将一个表达式求值为布尔值时,结果是真(true)还是假(false)。 1. 布尔表达式 如果布尔值为 true,表达式结果就为 true,...

Matthew的博客 1405

分析一次Groovy的接口、布尔判断、操作符重载

更准确的说,表达式的结果还与对象的类型有关。因为在ComplexNumber类上添加了plus()方法,所以可以使用+操作符把两个复数加到一起,得到又一个作为结果的复数。只需要创建一个映射,以每个方法的名字作为键,以方法对应的代码体作为键值,同时使用简单的Groovy风格,用冒号(:)分隔方法名和代码块即可。Groovy没有强制实现接口中的所有方法:可以只定义自己关心的,而不考虑其他方法。除了使用Groovy内建的布尔求值约定,在自己的类中,还可以通过实现asBoolean()方法来编写自己的布尔转换。

鸿蒙的技术博客 666

groovy if 判断字符串,比较groovy中的版本字符串

Hey I have created a Groovy script that will extract the version numbers of some folder. I would then like to compare the version numbers and select the highest.I got my script to run through the dir ...

weixin_36053926的博客 661

Groovy 之 面向对象

对象 ​ 首先创建一个 Person 类 class Person { String name; Integer age; /** * 定义方法 ,def 代表的就是 object * @param years */ def increateAge(Integer years) { this.age += years...

345丶 1384

记录个Java/Groovy的小问题:空字符串调用split函数返回非空数组

所以说,split方法当字符串为空字符串时会返回带有空字符串元素的数组!时,这个split方法转换的数组/列表是带有一个空字符串元素的!这行,经过测试可以发现个现象:当output字符串为空字符串。这种格式的字符串,用。分隔应该是没问题的。

拾级而上 536

【Groovy】类和对象

使用 abstract 修饰的类称为抽象类,抽象类中可以有抽象函数,这些函数被添加了 abstract 修饰符,父类不能实现,子类必须重写实现(子类如果也是抽象类除外)。抽象类不能被实例化,只能实例化其具化子类,抽象类中允许有具化的函数。@Override//def peo = new People() // 编译报错, 抽象类不能被实例化stu.say() // 打印: xiao min: Hello。

little_fat_sheep 1236

groovy if判断

/** * if 结构 * 在java中条件的表达式计算结果只能为布尔值 * 在groovy中 * 传入boolean或Boolean时,与java相同 * 传入数字时,非0为真,0为假 * 传入字符串时,空字符串为假,反之为真 * 传入集合时,元素个数等于0为假,元素个数大于0为真 * 传入对象时,null为假,反之为真 */ /////////////////////////

huanglianggu的专栏 1万+

Groovy

Groovy虽然支持Java的语法但它并没有强迫我们学习新的类和库,而是通过向JDK中各种类添加方法,所以说Groovy扩展了JDK,这些扩展称之为GDK(Groovy JDK)。

qq_48114126的博客 1531

groovy 面向对象

1. groovy中类,接口等的定义和使用 1.1 类 右键->New->Groovy Class创建一个groovy类,名字是Person。groovy默认所有的类都是public,所以创建完成的class前面没有public进行修饰。 /** * 1.groovy中默认都是public * 2.所有的groovy类都默认集成了一个GroovyObject类 * 这是g...

我是一只小菜鸟,飞丫飞丫飞~~~ 2172

groovy lambda_Java Lambda流和Groovy Clouse的比较

groovy lambda 这篇博客文章将研究List数据结构上的一些谚语操作,并对Java 8/9和Groovy语法进行一些比较。 因此,首先是数据结构。 这只是一个简单的橄榄球球员,具有名字和等级。 Java class RugbyPlayer { private String name; private Integer rating; RugbyP...

最佳 Java 编程 1707
上一篇: 第一个Grails程序
下一篇: Grails重定向以及Render、Session的使用
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值