我正在尝试从键值对中删除重复项。首先对数据进行排序似乎是实现此目的的最佳方法。我有元组(两个值都是Integer),所以代码不一定必须适用于不同的Objects,并且如果可以针对Integers对其进行优化,那将很棒。我想先按值对所有对进行排序,然后再按键对它们进行排序(请注意,在保持键值关系的同时,我需要进行两项操作)
我是Java的新手,我想知道Map(或我可以使用的任何其他数据结构)中是否存在可以为我完成排序的方法。由于我使用的数据集非常大(> 50GB),因此我必须尽可能地节省时间。我试过简单地将所有对添加到Set中(作为两个整数的连接字符串),然后将它们取出,但是花费的时间太长。我愿意在需要时切换到外部排序算法(我使用的是64 GB内存PC,因此占用O(n)以上空间的任何东西都会有问题)
答案 0 :(得分:0)
好吧,您可以通过将重复数据存储到TreeMap
中来对重复数据进行分类和消除。 TreeMap
是Map
的实现,其中TreeMap中的键是按其自然顺序排序的。我们可以实现Comparable<Data_Type>
并覆盖public int compareTo(T t)
来定义排序顺序。
由于这不是多键哈希,因此Map中只能存在一个键。因此,重复的实体将被自动覆盖。
看看这个链接:Sort a HashMap in Java