从两个相关列表中检索数据

时间:2018-03-26 09:45:01

标签: java

我有两个列表AList和BList。 AList中的元素是子元素,BList中的元素是父元素。一个孩子可以有一个以上的父母。表示如果AList的第0个索引处的元素在BList中可以有一个以上的父项。 我想从这些列表中检索数据,以便每个孩子都能得到父母。

假设第0个元素是子元素并且在父列表中有三个父元素,那么我想要检索该子元素的所有父元素。

我该怎么做?

Child  Parent
A         2A,3A, 4A

等等

请帮忙

2 个答案:

答案 0 :(得分:2)

我认为最好的方法是使用地图。在这种情况下,Child对象将是一个键,父对象将是一个值;

因此,您可以在Child类中创建Set字段,然后创建子对象并将父对象添加到其Set中(您需要创建自己的方法,将父级添加到子setOfParents - 如addParents())。毕竟,将Child对象映射为键,将父对象映射为值。

例如 - >

Map<Child, Set<Parent>> map = new HashMap();
Child a = new Child();
Parent p = new Parent();
a.addParent(p);
map.put(a, a.getListOfParents());

答案 1 :(得分:0)

这样的事情怎么样?

    // given are
    List<String> a = Arrays.asList("A", "B", "C");
    List<String> b = Arrays.asList("1A", "2A", "3A", "4B", "5B", "6C");

    // map parents and children
    Map<String, List<String>> map = new HashMap<>();
    a.forEach(x -> map.put(x, new ArrayList<>()));
    b.forEach(x -> map.get(x.substring(x.length() - 1)).add(x));

这导致与孩子的父母的地图。并且

System.out.println(map);

给出:

{A=[1A, 2A, 3A], B=[4B, 5B], C=[6C]}
相关问题