2013-01-31 77 views
1

这是排序的后续行动,我所做的第一篇文章中创建指针超出HashMap的对象,可以说我有两个类:对象数组

public class Carinfo { 

    private String carname; 
    //The Carinfo[] value is set when making a new car 
    //so for the object ford the array holds 3 null pointers 
    private Carinfo [] value; 

    Carinfo (String someCar, int carValue) { 
     this.carname = someCar; 
     this.value = new Carinfo[carValue]; 
    } 
} 

而第二类:

​​3210

因此,让我们说,无论出于什么原因,我希望对象ford在其Carinfo数组中有3个空指针 指向对象audi。 含义我可以通过Carinfo对象并列出每辆车 指向其他车辆的指针。

把它想象成一个家庭,我想看看什么车相互关联。 我很难创建一个方法,它将指向我的Carinfo HashMap中的其他对象 。

任何“指针”?如果有什么不清楚的地方,请让我改述或尝试更好地解释它。

干杯

+0

你真的想在这里完成什么?你在学习Java吗? –

回答

0

对于你需要为了与您所设置的值数组来播放CarInfo对象的访问方法起动。

public CarInfo[] getCarValue() { 
    return value; 
} 

现在,当你在一个方法在玩,你可以按如下称之为:

CarInfo[] fordValueArray = carGarage.get("Ford").getCarValue(); 

这个数组现在指向你的CarPark()的第三个命令创建的。

有了,我们可以这样做:

fordValueArray[0] = audi; 

现在,所有的说,似乎有点不清楚为什么你会成立专班的关系是这样的。 value的命名看起来并不直观,因为面值为你问的是我们如何让汽车的价值与其他汽车独立相关。福特的第一个价值是奥迪?另外两个值是什么?为什么我们会被限制在3个?

+0

嗨,很抱歉变数名称的选择不当。它的原因是,它是我在Uni的一项任务。所以我真的必须按照我在课堂设置方面给的任何东西去做。如果我将其设置为关系网络,它可能会更直观。所以为此我很抱歉,晚饭后尽快尝试您的解决方案。谢谢 – user2008560

1

我真的不明白你想要做什么。实现这一点的一种方法是提供一种添加关系的特定方法。例如,你的数组,你可以这样做:

public class CarInfo { 
    private Carinfo[] value; 
    public void addCarInfo(CarInfo carInfo, int position) { 
    value[position] = carInfo; 
    } 
} 

无论如何,这是不是有一个数组是一个好主意,你应该使用一个列表。

1

我会推荐而不是存储汽车之间的关系Carinfo对象本身。相反,您应该使用通用图库(或编写自己的通用图库)。

如您所知,graph是一组节点和边,每条边表示两个节点之间的关系。你现在的代码所描述的概念实际上只是一个有向图:每辆车都是一个节点,每辆车可以容纳一定数量的引用到其他汽车,其中每个引用代表从该汽车指出的边缘。

图形是数学和计算机科学中的一种常见抽象,已经实现了大量库来表示图形,其副作用是解决了使用这些库的任何代码的几个常见问题(例如,找到一个多步骤使用最少边数的两辆汽车之间的关系,或者找出图中所需的最小边数,以确保所有汽车仍然间接连接)。我建议搜索已经实现的图形库,然后使用具有最佳功能的图形库来解决整体问题。但是,如果这是一项家庭作业,您应该实施自己的图形库。这并不难:您需要以某种方式存储节点和边(您可以保留一个节点列表,并且您可以使用边列表或邻接矩阵来存储边),并且您需要提供您关心的算法关于一个更一般的形式。这可能看起来像更多的工作,但使您的代码更模块化的好处将迅速回报。首先,您会创建更少的错误,因为代码的每个部分只执行一项工作,并且您将能够更轻松快速地修复错误,可能会为您节省整体时间。