作者Nt1 (用功点吧!)
看板java
标题[问题] 请问如何实作两个key和一个value的对应关系?
时间Thu May 15 13:31:00 2008
请问一下,假设我有 四笔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
1F:推 TonyQ:把两个key转型为一个key, 然後用map 05/15 13:33
2F:推 tkcn:如果data是依序编号的,直接放进二维阵列也不错 05/15 13:35
3F:→ Nt1:data不是依序编号的@@~另外,请问一楼大大,把两个key转为一个 05/15 13:42
4F:→ Nt1:KEY的概念是什麽?我的data是自订的class,之前有试过转为字串 05/15 13:44
5F:推 tkcn:其实,可以自己编号.. 05/15 13:44
6F:→ Nt1:是用a.toString()+b.toString 放进map里,但这样b,a也要放一次 05/15 13:45
7F:推 PsMonkey:先对 a, b 比大小就好啦 [茶] 05/15 14:22