Java 链接两个对象并逐个获取它们

Java 链接两个对象并逐个获取它们,java,optimization,Java,Optimization,我有一个相当简单的大学问题,我无法解决 我有两个对象数组,让我们称它们为A和B A可以有多个B 我必须实施 public void linkThem( A[] aArray, B[] bArray) { } public List<B> getBbyA( A a) { } 在主类中添加私有静态列表ABList=newarraylist() 在所有A和B上执行foreach(),在geters中执行更多foreach()(在AB上,然后在AB中执行foreach()在bLis

我有一个相当简单的大学问题,我无法解决

我有两个对象数组,让我们称它们为
A
B

A
可以有多个
B

我必须实施

public void linkThem( A[] aArray, B[] bArray)
{

}


public List<B> getBbyA( A a)
{

}
在主类中添加私有静态列表ABList=newarraylist()

在所有
A
B
上执行
foreach()
,在geters中执行更多
foreach()
(在
AB
上,然后在
AB
中执行
foreach()
bList
上)

但这是一种非常丑陋的“暴力”方法,我真的想要更简单、更少“系统负担”的解决方案


Thx提前

如果我没弄错你的问题,就像xp500说的那样,你应该看看地图

对于您的困境,非常简单的解决方案如下:

private Map<A,B> AtoB = new HashMap<A,B>();
private Map<A,List<B>> BtoA = new HashMap<A,List<B>>();
private-Map-AtoB=new-HashMap();
私有映射BtoA=新HashMap();
在“链接”部分,您需要:

public void linkThem( A[] aArray, B[] bArray)
{
    for (A a : aArray)
        for (B b : bArray)
            if( theyAreLinked() )
            {
                AtoB.put( a, b );

                List<B> temp =  BtoA.get(a);
                if(temp == null)
                    temp = new ArrayList<B>();
                temp.add(b);
                BtoA.put( a,temp  ):
            }
}
public void链接他们(A[]aArray,B[]bArray)
{
为了(A:aArray)
对于(B:bArray)
如果(它们被标记为()
{
AtoB.put(a,b);
列表温度=BtoA.get(a);
if(temp==null)
temp=新的ArrayList();
临时添加(b);
BtoA.put(a,温度):
}
}
在getter中:

public List<B> getB( A a)
{
    return BtoA.get( a );
}

// i think you should only return one A here
public A getA( B b)
{
    return AtoB.get( b );
}
公共列表getB(A)
{
返回BtoA.get(a);
}
//我想你应该在这里只退一个A
公共A getA(B)
{
返回AtoB.get(b);
}

但我认为如果你过度优化,这里有更好的解决方案。。。但正如你所说,这是为大学准备的,我想这就足够了。

我不确定我是否理解这个问题,但阅读有关地图的内容,可能会有所帮助
public void linkThem( A[] aArray, B[] bArray)
{
    for (A a : aArray)
        for (B b : bArray)
            if( theyAreLinked() )
            {
                AtoB.put( a, b );

                List<B> temp =  BtoA.get(a);
                if(temp == null)
                    temp = new ArrayList<B>();
                temp.add(b);
                BtoA.put( a,temp  ):
            }
}
public List<B> getB( A a)
{
    return BtoA.get( a );
}

// i think you should only return one A here
public A getA( B b)
{
    return AtoB.get( b );
}