考慮我具有的值的三列如下檢測重複的值,高效的數據結構,用於對另一值
Col-A Col-B Values
1 2 9
3 4 9
5 6 9
1 2 8
5 6 8
3 4 7
1 2 7
5 6 10
1 2 10
1 3 10
1 4 10
因此,在上面的一組值,(1,2) -B)具有所有的值(即9,8,7和10),而其他的則如3,4; 5,6沒有所有的價值。我只想獲得(1,2)以上數據。
我想過使用哈希表來嘗試它,將(ColA,ColB)添加到一個單獨的對象,並使用一個Hashtable,其關鍵是對象和值是列'值'。即
Class K
{
int a;
int b;
}
Hashtable<K,int> numbers = new Hashtable<K,int>();
將每一行添加到散列表,並且當發現重複鍵時,增加計數。最後檢查計數是否等於「值」列中不同值的數量。
但我無法弄清楚如何迭代值的每個值,即9,8,7,10。有一個更好的方法嗎。
[編輯]在Java中實現dasblinkenlight的方法後:
ArrayList<Double> list;
Hashtable<K,ArrayList<Double>> numbers = new Hashtable<K,ArrayList<Double>>();
while((line = brMyHashval.readLine()) != null)
{
if(!(line.isEmpty()))
{
String[] temp;
temp = line.split(" ");
eDouble = Double.parseDouble(temp[5].toString());
Val key = new Val(Double.parseDouble(temp[0].toString()) ,Double.parseDouble(temp[1].toString()));
if(!(numbers.containsKey(key)))
{
list = new ArrayList<Double>();
numbers.put(key, list);
}
else
{
list = numbers.get(key);
}
list.add(eDouble);
}
}
但控制而來的 '如果' 循環每次。即使密鑰是相同的,它也不會進入其他部分。在Java中,id與每個關鍵字相關聯。那麼它會檢查對象'key'中的id或值。
迭代1:鍵(id = 52)X = 1,Y = 2
迭代2:鍵(id = 53)X = 3,Y = 4
迭代3:鍵(id = 55)X = 5,Y = 6
迭代4:鍵(id = 56)X = 1,Y = 2
只是一個說明,原來的問題被標記爲java,而不是javascript。雖然如果你把你的答案翻譯成Java(這不難),但這當然很有用。 – QuantumMechanic
謝謝。但是每次控制都轉到'if'循環。即使密鑰是相同的,它也不會進入其他部分。在Java中,id與每個關鍵字相關聯。那麼它會檢查對象'key'中的id或值。 迭代1: 鍵(id = 52) X = 1,Y = 2 迭代2: 鍵(id = 53) X = 3,Y = 4 迭代3: 鍵(id = 55) X = 5,Y = 6 迭代4: 鍵(id = 56) X = 1,Y = 2 – SyncMaster
我對面此來了,http://stackoverflow.com/questions/6485186/if - 鍵式的散列表 - 是 - 一類對象,如何此結果的containsKey工作 – SyncMaster