我有两组对象,A 和 B。类型 A 的对象在列表中包含不同数量的类型 B 的对象。示例:A1 - B1、B2 A2 - B3、B4、B5、B6 A3 - B7、B8、B9。我希望将所有 B 类项目合并到一个列表中,并通过索引访问它们(最具体的是将它们用作 RecyclerViewAdapter 的数据),但以某种方式保留对容器 A 对象的引用(对象上的 None 可以被修改,因此我必须使用数据结构)。我尝试使用 HashMap> ,但这样我无法访问 B 项的所有索引,并且 HashMap 将意味着重复 A 类型对象,并随后产生不必要的内存影响。有没有更好的方法来做到这一点?谢谢。
1 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
你可以这样做:
objectASet.stream().map(a -> {
a.getB().stream.map(b -> new Pair<>(b, a)).collect(Collectors.toList());
).flatMap(list -> list.stream()).collect(Collectors.toList());
这段代码的作用如下:
迭代包含每个 A 对象中的 B 对象的 ObjectASet。
将每个 a 映射到一个 javaFx 对对象列表,其中键是 b,值是 a 的引用。如果 b 对象不是唯一对象,那么您可以根据需要将 b 与 a 交换。
flatmap 意味着将所有单独创建的列表合并到一个大列表流中。
将此流收集到列表中。
现在您有一个包含键为 b 值是 a 引用的对的列表。您可以通过索引引用列表。希望这个解决方案可以帮助你
添加回答
举报
0/150
提交
取消