今天我需要选择最有效的数据结构来满足我在 Java 中的需求。
基本上我有一个算法有一组 <Integer, Object>
.
- 首先多个线程创建这个集合的一些,然后它们被合并, 按整数排序并删除最终重复的对象 结果集。
- 比对每个元素 x
<Integer, Object>
我需要 获取Integer小于x.Integer的y个元素
由于第二点与算法相关,您会选择在 Java 中使用哪种数据结构?
最佳答案
你想要一个 NavigableMap
比如 TreeMap
或者 ConcurrentSkipListMap
注意:TreeMap
不是线程安全的,但是如果您在 TreeMap 的本地副本中为每个线程收集数据并在完成时合并结果,则可能会更高效。也就是说,您可以减少竞争。
注2:您只需要一个TreeMap
来执行小于
比较。进一步的改进可能是使用 HashMap
来收集每个线程中的数据,并将结果合并到 TreeMap
中以执行搜索。
关于java - 在 Java 中为我的算法选择正确的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659115/