gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:04:16 25 4
gpt4 key购买 nike

我有一个数据类:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com