Pep*_*tch 3 java set hashset guava kotlin
我无法找到包含数据类的哈希集数组的交集(我想通过标识符进行相交):
class Protein(val id: String, val score: Double, val molw: Double, val spc: Int)
Run Code Online (Sandbox Code Playgroud)
我已将 .csv 文件中的一些数据提取到这种类型的结构中:
ArrayList<HashSet<Protein>>
Run Code Online (Sandbox Code Playgroud)
因此,我有六个数组列表 [每个 csv 1 个],每个列表都包含一个包含数千个蛋白质结构的哈希集。到目前为止,我尝试根据常见 Protein.id 获取交集 HashSet:
fun intersection(data: ArrayList<HashSet<Protein>>): HashSet<Protein> {
val intersectionSet = HashSet<Protein>(data[0])
for (i in 1..data.size) {
intersectionSet.retainAll(data[i])
}
return intersectionSet
}
Run Code Online (Sandbox Code Playgroud)
这会返回一个空列表,考虑到它试图与 Protein 对象相交并匹配每个标准作为一个整体,这是有道理的。
如何将 data[i].id 称为交叉条件?我对 Kotlin 和数据类相当陌生:)
为了简化给定的答案,您可以使用apply:
return data.reduce { acc, it -> acc.apply { retainAll(it) } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4194 次 |
| 最近记录: |