[問題] 請問如何實作兩個key和一個value的對應關係?

看板java作者 (用功點吧!)時間17年前 (2008/05/15 13:31), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串1/1
請問一下,假設我有 四筆data,分別是 A, B, C, D,每個data可以兩兩算距離, 例如 AB, AC, AD, BC, BD, CD。 我希望有一個資料結構可以把這些距離的關係保存下來,並且可以很快的找到他們, 例如:getDistance(A, B),就可以把A和B的距離取出來,請問該怎麼做比較好呢? 我目前想到的方法是這樣: ========================================================================= class PairCollection{ ArrayList<Pair> pairs; //all pairs(例如 ab, ac, ad, bc........) double getDistance(data a, data b){ for(Pair p: pairs){ //對全部的 pair 掃描一次 if(p.contain(a) && p.contain(b)){ //如果pair中有a且b return p.getDisntace; } } } } --------------------------------------------------------------------------- class Pair{ HashSet<data> dataPair; //用hashset來存data double distance; //這個pair(例如a和b)的距離 ...... } =========================================================================== 但總覺得不夠聰明,每次想取得距離就要全部拿來比對,不知道會不會很慢, 不知道有沒有什麼比較好的作法,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.148.61

05/15 13:33, , 1F
把兩個key轉型為一個key, 然後用map
05/15 13:33, 1F

05/15 13:35, , 2F
如果data是依序編號的,直接放進二維陣列也不錯
05/15 13:35, 2F

05/15 13:42, , 3F
data不是依序編號的@@~另外,請問一樓大大,把兩個key轉為一個
05/15 13:42, 3F

05/15 13:44, , 4F
KEY的概念是什麼?我的data是自訂的class,之前有試過轉為字串
05/15 13:44, 4F

05/15 13:44, , 5F
其實,可以自己編號..
05/15 13:44, 5F

05/15 13:45, , 6F
是用a.toString()+b.toString 放進map裡,但這樣b,a也要放一次
05/15 13:45, 6F

05/15 14:22, , 7F
先對 a, b 比大小就好啦 [茶]
05/15 14:22, 7F
文章代碼(AID): #18AygLBA (java)