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