如果我NavigableMap已经形成了。floorEntry()执行操作所需的时间是多少?会是O(1)还是O(logn)?
例如:
如果我有NavigableMapn 个间隔,并且我使用map.floorEntry(k)一些 random k,那么执行操作的时间复杂度是多少?
我有一个对象列表,我需要根据其中一个字段的属性进行排序.我听说SortedMap和Comparators是最好的方法.
编辑: 这段代码给我一个错误:
private TreeMap<Ktr> collection = new TreeMap<Ktr>();
Run Code Online (Sandbox Code Playgroud)
(Ktr实施Comparator<Ktr>).Eclipse说它期待类似的东西TreeMap<K, V>,所以我提供的参数数量不正确.
如何在scala(mutable/immutable)中创建有序映射?
我的应用程序使用TreeMap来保持数据排序并具有log(n)查找和插入.这在应用程序运行时的一般情况下效果很好,但是当应用程序首次启动时,我需要初始化具有数百万个long的TreeMap,我按排序顺序(升序).
由于这些初始化值已经排序,有没有办法将它们插入TreeMap而不支付树插入和重新平衡的log(n)成本?
我需要像TreeMap一样排序的地图,但按值排序.我的地图将是巨大的,所以我不能随时对我的地图进行排序.是否存在解决此问题的好方案?也许存在符合此要求的外部罐子?
我有一个val it:Iterator[(A,B)],我想SortedMap[A,B]用我得到的元素创建一个Iterator.我现在这样做的方式是:
val map = SortedMap[A,B]() ++ it
Run Code Online (Sandbox Code Playgroud)
它工作正常,但使用感觉有点尴尬.我检查了SortedMap文档,但找不到更优雅的东西.是否有类似的东西:
it.toSortedMap
Run Code Online (Sandbox Code Playgroud)
要么
SortedMap.from(it)
Run Code Online (Sandbox Code Playgroud)
在标准的Scala库中,我可能错过了?
编辑:混合来自@ Rex答案的两个想法我想出了这个:
SortedMap(it.to:_*)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,并避免必须指定类型签名SortedMap.虽然看起来仍然很有趣,但欢迎进一步的答案.
我试图找出 Java 中 HashMap 和 TreeMap 中 equals() 的计算复杂度。现在,您可能会说它在两种情况下都应该相同,因为 HashMap 和 TreeMap 都从 AbstractMap 继承了相同的实现。但是,在我完全接受之前,我需要一些解释。
这就是让我困惑的地方。AbstractMap 文档中覆盖的 equals() 的部分解释是:
更正式地说,如果 m1.entrySet().equals(m2.entrySet()),则两个映射 m1 和 m2 表示相同的映射。
文档不清楚 entrySet 返回的集合是 HashSet 还是 SortedSet 或其他东西。在我看来,了解这一点很重要,因为它会影响整体分析。
如果 entrySet() 返回的集合是 HashSet 类型,那么两个集合可以在 O(n) 中进行比较[在两个散列集合的情况下相等的成本]。但是,如果它们是 SortedSet 类型,那么它们可以在 O(nlogn) 中进行比较 [在两个排序集的情况下相等的成本]。因此,在 HashMap 的情况下 equals() 的复杂性在 SortedMap 的情况下会有所不同,或者至少它应该基于我的推理。
我强烈怀疑我的推理中的某个地方是错误的,所以请随时告诉我我错在哪里。什么是正确的推理。而且,最后我对 HashMap 和 SortedMap 的 equals() 的复杂性感兴趣。谢谢。
我有一个TreeMap<Date, Integer>,我想从该地图中获取第n个项目。我现在想到的是:
((Integer)myTreeMap.values().toArray()[index]).intValue();
Run Code Online (Sandbox Code Playgroud)
但这感觉很笨重,更不用说堆上或性能上发生了什么?
有没有一种简洁的方法可以从/获取第n项?TreeMapSortedMap
开始与Kotlin一起玩周末并试图让地图与运营商合作.不知怎的,Kotlin告诉我,我对它的含糊不清感到困惑.
这是有效的代码(在语法上不像我想要的那样):
var columns = sortedMapOf("a" to 1, "b" to 2)
columns.plusAssign("c" to 3)
Run Code Online (Sandbox Code Playgroud)
这里的代码根本不编译(但语法上更接近我想要的)
var cs = sortedMapOf(1 to "a", 2 to "b")
cs += Pair(3, "c")
Run Code Online (Sandbox Code Playgroud)
我错过了什么速记操作员魔术/铸造?
提前致谢.
KotlinsSortedMap是“一个进一步提供其键上的总排序的映射”。
因此,它应该是可索引的。但是这个扩展不存在
`sortedMap.forEachIndexed()`
Run Code Online (Sandbox Code Playgroud)
为什么不?我是否忽略了什么?是性能原因吗?没有人打扰吗?
(是的,我知道,我可以使用 List<Pair<Key, Value>>,但这对于我的用例来说并不像“直观”结构,地图更适合)
sortedmap ×10
java ×6
treemap ×4
kotlin ×2
scala ×2
collections ×1
comparator ×1
dictionary ×1
equals ×1
hashmap ×1
insertion ×1
interface ×1