gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:00:41 25 4
gpt4 key购买 nike

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

我有两个对象数组,我们称它们为 AB

A可以有多个 B

我必须实现

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

}


public List<B> getBbyA( A a)
{

}

public List<A> getAbyB( B b)
{

}

迭代次数最少!!

现在我能看到的唯一解决方案是创建新类 AB :

class AB
{
private final A a;
private List<B> bList = new ArrayList<B>();

public AB( A a )
{
this.a = a;
}
}

在主类中添加 private static List<AB> ABList = new ArrayList<AB>();

foreach()在所有AB在 geters 中做更多 foreach() (在 AB 上然后在 AB foreach()bList )

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

提前致谢。

最佳答案

如果我像 xp500 所说的那样回答您的问题,您应该查看 map 。

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

private Map<A,B> AtoB = new HashMap<A,B>();
private Map<A,List<B>> BtoA = new HashMap<A,List<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 ):
}
}

在 setter/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 );
}

但我认为,如果您过度优化,这里有更好的解决方案...但正如您所说,这适用于大学,我认为这就足够了。

关于java - 链接两个对象并逐个获取它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com