2016-04-24 56 views
0

我有2個來源從中讀取數據。該數據可能是重複的,我需要通過從另一箇中減去2個集合來檢測這些重複項。 目前,我用List<Map<String, String> duplList,所以當我插入重複的值:有效的數據結構來保存/添加/刪除重複項目

Map<String, String> map1 = new HashMap(); 
map1.put("1", "1"); 
map1.put("1", "1"); 
map1.put("1", "1"); 
duplList.add(map1); 

Map<String, String> map2 = new HashMap(); 
map2.put("1", "1"); 
map2.put("1", "1"); 
duplList.add(map2); 

後來減去他們:

Collection diff1 = CollectionUtils.subtract(map1, map2); 
Collection diff2 = CollectionUtils.subtract(map2, map1); 

我得到一個包含MAP1和MAP2之間的區別的對象。
雖然這個工作,它似乎不是很有效的我(因爲它在O(n)時間運行)。

我想知道是否有一個更有效的方式來增加和減少數據到更高效的數據結構。

+0

你如何定義重複?重複的鍵或鍵值對?另外,如何在找到重複項目後解決衝突? –

+0

如果我理解你正確,你可以使用add方法將你的「可複製」對象添加到Set。如果使用對象添加調用返回false,則該對象是重複的,因此將其存儲爲單獨的集合。 – Ilya

+0

@SergeiLebedev重複被定義爲相同的鍵值巴黎,所以「1」 - >「1」是重複的,但是「1」 - >「2」不是。 – ocp1000

回答

0

如果您只是想將您的數據放入未排序的Collection中,則可以使用HashSet,如果您想將其排序,則可以使用TreeSetTreeSet需要一個類實現Comparable雖然 - 如果你只是使用字符串或整數,你應該沒問題。你可以找到更多的信息在Java Doc: Set

+0

我沒有提及我的數據必須採用鍵值對格式。將它存儲在Set >比List 更有效嗎? – ocp1000

相關問題