編輯:我應該提到我對Java編程極其新穎。大約兩週前我剛開始使用該語言。防止在碰撞時合併樹圖
我試圖尋找一個答案,這個問題,但到目前爲止,我還沒有找到一個所以這就是爲什麼我問這裏。
我編寫Java代碼爲龍與地下城倡議跟蹤器,我使用一個TreeMap對其進行排序對進入的能力。我對Java仍然很陌生,所以我不知道那裏的一切。
我的問題是,當我有兩個相同的密鑰,樹合併的值,使得值中的一個不再存在。我知道這可能是理想的行爲,但在我的情況下,我不能這樣做。我希望能有一個優雅的解決方案來解決這個問題。到目前爲止,我擁有的是:
TreeMap<Integer,Character> initiativeList = new TreeMap<Integer,Character>(Collections.reverseOrder());
Character [] cHolder = new Character[3];
out.println("Thank you for using the Initiative Tracker Project.");
cHolder[0] = new Character("Fred",2);
cHolder[1] = new Character("Sam",3,23);
cHolder[2] = new Character("John",2,23);
for(int i = 0; i < cHolder.length; ++i)
{
initiativeList.put(cHolder[i].getInitValue(), cHolder[i]);
}
out.println("Initiative List: " + initiativeList);
字符是我定義的一個類,用於跟蹤玩家的角色名稱和主動值。
目前的輸出是這樣的:
Initiative List: {23=John, 3=Fred}
我認爲使用了某種子集合的一個TreeMap,但我也碰到了類似的問題。我真正需要做的只是找到一種方法來禁用合併。謝謝你們給我的任何幫助。
編輯:在龍與地下城,字符輥20面的骰子中,然後加入他們的主動模的結果來獲得它們的總倡議。有時候兩個玩家可以獲得相同的價值。我想過有格式如下鍵值:
Key = InitiativeValue.InitiativeMod
所以山姆他的關鍵是23.3和約翰將23.2。我知道我需要將鍵類型更改爲float而不是int。
然而,即使有兩個球員可能具有相同的倡議國防部和推出同樣計劃價值。事實上,這發生得比你想象的要多。例如,
說彼得和斯科特加入遊戲。他們都有2的主動調整值,並且他們在20個骰子上擲出10。這將使雙方的主觀能動性值12
當我把它們放到現有的地圖,他們都需要顯示出來,即使它們具有相同的值。
Initiative List: {23=John, 12=Peter, 12=Scott, 3=Fred}
我希望幫助澄清什麼,我需要。
你想要發生什麼?你會碰到幾個multimap實現的問題? –
如果你想讓他們成爲一個集合,你不能讓他們擁有相同的密鑰。我會建議使用Character類的一些獨特的東西作爲密鑰 – gtgaxiola
Ditto存儲到Dave,但也向我們展示了導致問題的案例的樣本輸入和期望結果。 – Bohemian