首先按“值”对“键-值”对排序,然后按“键”排序。 (类似于“基数排序”)。我需要保持键值关系

时间:2019-06-13 02:21:46

标签: java sorting bigdata key-value

我正在尝试从键值对中删除重复项。首先对数据进行排序似乎是实现此目的的最佳方法。我有元组(两个值都是Integer),所以代码不一定必须适用于不同的Objects,并且如果可以针对Integers对其进行优化,那将很棒。我想先按值对所有对进行排序,然后再按键对它们进行排序(请注意,在保持键值关系的同时,我需要进行两项操作)

我是Java的新手,我想知道Map(或我可以使用的任何其他数据结构)中是否存在可以为我完成排序的方法。由于我使用的数据集非常大(> 50GB),因此我必须尽可能地节省时间。我试过简单地将所有对添加到Set中(作为两个整数的连接字符串),然后将它们取出,但是花费的时间太长。我愿意在需要时切换到外部排序算法(我使用的是64 GB内存PC,因此占用O(n)以上空间的任何东西都会有问题)

1 个答案:

答案 0 :(得分:0)

好吧,您可以通过将重复数据存储到TreeMap中来对重复数据进行分类和消除。 TreeMapMap的实现,其中TreeMap中的键是按其自然顺序排序的。我们可以实现Comparable<Data_Type>并覆盖public int compareTo(T t)来定义排序顺序。

由于这不是多键哈希,因此Map中只能存在一个键。因此,重复的实体将被自动覆盖。

看看这个链接:Sort a HashMap in Java