为了账号安全,请及时绑定邮箱和手机立即绑定

不同对象数据集中的双重引用

不同对象数据集中的双重引用

天涯尽头无女友 2021-07-13 10:13:28
我有两组对象,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());

这段代码的作用如下:

  1. 迭代包含每个 A 对象中的 B 对象的 ObjectASet。

  2. 将每个 a 映射到一个 javaFx 对对象列表,其中键是 b,值是 a 的引用。如果 b 对象不是唯一对象,那么您可以根据需要将 b 与 a 交换。

  3. flatmap 意味着将所有单独创建的列表合并到一个大列表流中。

  4. 将此流收集到列表中。

现在您有一个包含键为 b 值是 a 引用的对的列表。您可以通过索引引用列表。希望这个解决方案可以帮助你


查看完整回答
反对 回复 2021-07-14
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信