用于保存/添加/删除重复项的高效数据结构

时间:2016-04-24 13:46:55

标签: java data-structures memory-efficient

我有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)时间内运行)。

我想知道是否有更有效的方法来将数据添加到更有效的数据结构中。

1 个答案:

答案 0 :(得分:0)

如果您只想将数据放在未排序的集合中,可以使用HashSet,如果您希望对其进行排序,则可以使用TreeSetTreeSet需要一个实现Comparable的类 - 如果你只是使用字符串或整数,你应该没问题。您可以在Java Doc: Set

找到更多信息