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

时间:2018-08-11 07:56:12

标签: java list dictionary data-structures dataset

我有两组对象,即A和B。类型A的对象在列表中包含不同数量的类型B的对象。例: A1-B1,B2 A2-B3,B4,B5,B6 A3-B7,B8,B9。 我希望将所有B型项目合并到一个列表中,并通过索引访问它们(最具体的说是将它们用作RecyclerViewAdapter的数据),但是要以某种方式保留对容器A对象的引用(对象上没有对象可以被修改,因此我必须使用数据结构。

我尝试使用HashMap>,但是那样一来,我无法访问B项目的所有索引,并且HashMap意味着要重复获取A型对象,从而产生不必要的内存影响。有更好的方法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

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映射到键为b且值为a的引用的javaFx对对象列表。如果b对象不是唯一对象,则可以将b与a交换。
  3. flatmap意味着将所有单独创建的列表合并到一个大列表流中。
  4. 将此流收集到一个列表中。

现在,您有了一个列表,其中包含键为b且对值为a引用的对。您可以通过其索引引用列表。希望此解决方案对您有帮助