java - 首先按值排序键值对,然后按键排序。 (类似于基数排序)。我需要维护键值关系

标签 java sorting bigdata key-value

我正在尝试从键值对中删除重复项。首先对数据进行排序似乎是做到这一点的最佳方法。我有元组(两个值都是整数),因此代码不一定适用于不同的对象,如果可以针对整数进行优化,那就太好了。我想首先按值对所有对进行排序,然后按键排序(请注意,在维护键值关系的同时我需要这两种操作)

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

最佳答案

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

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

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

关于java - 首先按值排序键值对,然后按键排序。 (类似于基数排序)。我需要维护键值关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572558/

相关文章:

javascript - 以相应的 JavaScript 方式对相关数组进行排序

postgresql - 如何用Hadoop实时处理Postgres数据库?

java - ViewPager/Sherlock/尝试添加页面指示器

Java如何以字符为参数,然后该方法向前和向后打印序列?

Java 并发性 -_- 在线程之间共享变量时的可见性/重新排序

java - Java中的排序集合

java - 如何从包(工具栏)设置文本

sorting - 如何逆时针排列点

python - Pandas 根据列的值有效地分块读取大型面板 CSV

data-analysis - 将非结构化医学文本数据处理为 CSV 的工具/方法