Android studio 给出不同结果的Kotlin表达式(运行时与IDE求值表达式)

Android studio 给出不同结果的Kotlin表达式(运行时与IDE求值表达式),android-studio,kotlin,debugging,Android Studio,Kotlin,Debugging,我需要加入两个列表,并检查是否有任何项目设置了某些标志。 这给了我一些不好的结果。调试期间: 行前的数据表示result=true(true应该是正确答案) 我通过运行程序得到result=false 在该行之后,当我使用Evaluate expression工具时,我得到result=true 绝对不是问题的是,之间的数据没有变化 my app/IDE插件的Kotlin版本不同: val result: Boolean = aList.union(bList).any { it.somethi

我需要加入两个列表,并检查是否有任何项目设置了某些标志。 这给了我一些不好的结果。调试期间:

  • 行前的数据表示
    result=true
    true
    应该是正确答案)
  • 我通过运行程序得到
    result=false
  • 在该行之后,当我使用Evaluate expression工具时,我得到
    result=true
  • 绝对不是问题的是,之间的数据没有变化

    my app/IDE插件的Kotlin版本不同:

    val result: Boolean = aList.union(bList).any { it.something?.someOtherFlag == true }
    

    我想要的是一个解释:问题出在哪里?

    union方法返回一个只保留不同元素的集合,并且它可能(可能?)在运行和在调试器中求值时丢弃不同的元素。我不确定它应该有多确定,但顺序可能很重要

    如果元素的
    equals()
    和/或
    hashCode()
    是在不使用
    something
    的情况下定义的,或者
    equals()
    /
    hashCode()
    是在不使用
    sometherflag
    的情况下定义的,则可能发生这种情况。这些类是如何定义的


    请注意,对于
    数据类
    es,生成的
    equals
    hashcode
    方法只考虑主构造函数中存在的属性。

    我想知道如果用常规列表串联
    替换
    union
    ,会发生什么情况。另外,如何定义元素的类型?这些是数据类吗?如果你共享2个列表的实际内容会有帮助。这正是问题所在,我的同龄人没有考虑
    某个问题。不过有一个问题:这里的确切错误是什么?
    aList.union(bList)
    在运行时是否不包含元素,或者过滤器是否不工作,因为编译器假定项目相等,因此无需检查标志?@Simon
    union
    方法的返回值是一个集合,因此在运行时该集合不能有重复项(重复项是由
    hashcode()
    /
    equals()
    duo定义的)。因此简而言之
    aList.union(bList)
    将缺少一些元素,而
    aList+bList
    将保留所有内容。过滤器很好。
    Kotlin Plugin: 203-1.5.0
    App: 1.4.21