当键和值相同时,为什么java.util.LinkedHashMap不相等?

时间:2018-10-23 16:30:26

标签: groovy spock

我有一个只有一个元素的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)

我不知道为什么。有任何猜测吗?

1 个答案:

答案 0 :(得分:1)

在Groovy中,String(单引号)不等同于GString(双引号)-当它们用作Map键时通常会弹出。在设置/使用密钥之前,请致电Stringas String来确保您的密钥为.toString()