java - HashMap<data class, data class> object.keySet() 函数抛出与公共(public)调用相关的错误

标签 java hashmap kotlin hashset

我有一个数据类:

data class UniqueProtein(var id: String, var spc: Int, var r: DoubleArray)

我创建了一个 HashMap<UniqueProtein, UniqueProtein>我想将其转换为 HashSet,以便我可以找到两个 HashMap 之间的重叠值,如下所示:

dottest(control: HashMap<UniqueProtein, UniqueProtein>, treatment: HashMap<UniqueProtein, UniqueProtein>) 

var combineddata:HashSet<UniqueProtein> = control.keySet().retainAll(treatment.keySet())

IntelliJ 在两个 keySet() 调用下都会引发以下内嵌错误:

is public /*package*/ in 'HashMap'

但是由于我已将对象声明为数据类,所以我不确定发生了什么......

最佳答案

如果您正在寻找两个 map 中的公共(public)键,您可以直接 intersect他们的 key ,像这样:

val combinedData: Set<UniqueProtein> = control.keys.intersect(treatment.keys)

这将返回一个新集合,其中包含两个集合的公共(public)元素。


如果你深入了解它的实现,你会发现它只使用 retainAll (在它所调用的集合的副本上):

public infix fun <T> Iterable<T>.intersect(other: Iterable<T>): Set<T> {
    val set = this.toMutableSet()
    set.retainAll(other)
    return set
}

关于java - HashMap<data class, data class> object.keySet() 函数抛出与公共(public)调用相关的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49934576/

相关文章:

java - 只是另一个网络创业公司 - 平台比较

java - 在 wordpress post 中获取异常

java - 以跨平台方式维护 Mysql 数据库模式的最佳实践是什么?

java - 我需要一个 trie 样式的数据结构来存储自定义类的附加信息

java - restAssured - 无法掌握post方法

kotlin - 0xFF0000FF 整数文字不符合预期的类型 kotlin.Int

Java继承查询

java - 如何让 entrySet() 在新行显示键值对?(java)

performance - 有效地将大文件读入 map

android - 如何在类上使用 Kotlin 扩展函数?