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 );
}