groovy - 当键和值相同时,为什么`java.util.LinkedHashMap`不相等?
问题描述
我有一个只有一个元素的linkedHashMap,我想比较它是否相等。所以我写了下面的 spock 测试用例:
def "Get average value for a date key"() {
given:
def ex = ["08-2018": 13 as BigDecimal] as Map<String, Integer>
when:
def wta = new worktime_average()
def result = wta.get_time_vals(wtime, '08-2018') as Map<String, Integer>
then:
result.values()[0] == ex.values()[0] // Pass!
result.keySet() == ex.keySet() // Pass!
result == ex // Failed!!
}
它没有说:
result == ex
| | |
| | [08-2018:13] (java.util.LinkedHashMap)
| false
[08-2018:13] (java.util.LinkedHashMap)
我不知道为什么。有什么猜测吗?
解决方案
在 Groovy 中,String
(单引号)不等同于GString
(双引号)——当它们用作 Map 键时,这通常会弹出。String
通过调用as String
或.toString()
在设置/使用密钥之前确保您的密钥是s。
推荐阅读
- php - 从构造函数 Codeigniter 3 中调用的方法返回 JSON 响应
- terraform - 具有相同变量的多个 IP 的 Terraform 模板
- python - 从 json 文件中读取 int
- html - Bootstrap 5 固定导航滚动一点
- python - Pandas Concat - gspread 工作表
- python - Discord 经济机器人 python 撤回命令不起作用有人知道为什么吗?
- javascript - 如何检测函数返回值是否被丢弃?
- php - 使用 HTML 中的文本区域将两个值插入 MariaDB 表 - PHP
- python - 需要会员运营商的解释
- node.js - 将数据从 Vue 前端传递到 Node/Express 后端