2013-01-31 75 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是一組節點和邊,每條邊表示兩個節點之間的關係。你現在的代碼所描述的概念實際上只是一個有向圖:每輛車都是一個節點,每輛車可以容納一定數量的引用到其他汽車,其中每個引用代表從該汽車指出的邊緣。

圖形是數學和計算機科學中的一種常見抽象,已經實現了大量庫來表示圖形,其副作用是解決了使用這些庫的任何代碼的幾個常見問題(例如,找到一個多步驟使用最少邊數的兩輛汽車之間的關係,或者找出圖中所需的最小邊數,以確保所有汽車仍然間接連接)。我建議搜索已經實現的圖形庫,然後使用具有最佳功能的圖形庫來解決整體問題。但是,如果這是一項家庭作業,您應該實施自己的圖形庫。這並不難:您需要以某種方式存儲節點和邊(您可以保留一個節點列表,並且您可以使用邊列表或鄰接矩陣來存儲邊),並且您需要提供您關心的算法關於一個更一般的形式。這可能看起來像更多的工作,但使您的代碼更模塊化的好處將迅速回報。首先,您會創建更少的錯誤,因爲代碼的每個部分只執行一項工作,並且您將能夠更輕鬆快速地修復錯誤,可能會爲您節省整體時間。