问题标签 [trove4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么不允许外部接口为 HashMap 提供 hashCode/equals?
使用 aTreeMap
提供 custom 是微不足道的Comparator
,从而覆盖Comparable
添加到地图的对象提供的语义。HashMap
但是不能以这种方式控制 s;提供散列值和相等性检查的函数不能被“侧载”。
我怀疑设计一个界面并将其改造成HashMap
(或一个新类)既容易又有用?像这样的东西,除了更好的名字:
不区分大小写Map
的问题得到了一个简单的解决方案:
这是否可行,或者你能看到这种方法的任何基本问题吗?
是否在任何现有(非 JRE)库中使用了该方法?(试过谷歌,没有运气。)
编辑:hazzen 提出了很好的解决方法,但恐怕这是我试图避免的解决方法...... ;)
编辑:将标题更改为不再提及“比较器”;我怀疑这有点令人困惑。
编辑:接受与性能相关的答案;会喜欢更具体的答案!
编辑:有一个实现;请参阅下面接受的答案。
编辑:改写第一句以更清楚地表明这是我所追求的侧载(而不是排序;排序不属于 HashMap)。
java - 如何返回 Java Trove 集合的不可修改视图?
我想在一些 Trove 集合周围放置不可修改的包装器:我检查了 Trove 文档,但似乎找不到简单的方法(我可能忽略了一些明显的东西)。
因此,到目前为止,每次我需要这样一个不可修改的包装器时,我都会扩展 Trove 集合(例如TIntLongHashMap)并将所有只读调用委托给 Trove 包装的主题,并在每个尝试修改集合的方法中抛出UnsupportedOperationException .
有没有更简单的方法?
注意:这个问题与默认 Java 集合无关,在这种情况下,我对默认 Java 集合和其他 Java 集合都不感兴趣:这个问题专门针对 Trove。
java - Java中HashTable的自定义实现?
我正在解决Quora 问题,对于我的特定解决方案,我需要一个哈希表(长键、整数值)来缓存值。我希望 Java HashMap 可以改进,因为我知道键和值的数据类型,它们是原语,也是我的问题空间。我决定天真地继续使用“链表数组”结构实现一个简单的哈希表(甚至我的链表也是我自己实现的 Node 类)。但我注意到我自己的幼稚实现比通用 Java HashMap 慢了大约 4 倍。我还尝试使用Trove 的 LongToIntMap库来看看他们做了什么。有没有人有任何好的建议来在 Java 中构建一个自定义的 Long to Int 哈希表,它的性能明显优于 Java HashMap?
java - Trove 库是线程安全的吗?
GNU trove 库是线程安全的吗?我对 TObjectDoubleHashMap 特别感兴趣。我查看了他们的文档,但没有提到任何内容,所以我们是否应该假设它不是线程安全的?
java - 这种锁定技术的名称是什么?
我有一个巨大的 Trove 地图和一个我需要经常从多个线程调用的方法。大多数情况下,此方法应返回true。线程正在进行大量的数字运算,我注意到由于以下方法而存在一些争用(这只是一个示例,我的实际代码有点不同):
请注意,它是一个“仅附加”映射:一旦添加了一个键,它就会永远保留在那里(这对我认为接下来发生的事情很重要)。
我注意到通过将上述内容更改为:
我的数字运算速度提高了 20%(经过大量运行、长时间运行等验证)。
这种优化看起来是否正确(知道一旦有密钥,它将永远留在那里)?
这种技术的名称是什么?
编辑
更新地图的代码调用频率低于containsSpecial()方法,看起来像这样(我已经同步了整个方法):
java - 需要一个在添加和删除时不会产生任何垃圾的高效 Map 或 Set
因此,由于 Javolution 不起作用(请参见此处),我非常需要一个高效且在简单使用下不会产生垃圾的 Java Map 实现。java.util.Map
添加和删除键时会产生垃圾。我检查了 Trove 和 Guava,但看起来他们没有 Set<E> 实现。我在哪里可以找到一个简单而有效的替代方案java.util.Map
?
编辑 EJP:
条目对象在添加条目时分配,在删除条目时释放给 GC。:(
java - Java Hash Multi Map(具有多个值的键)实现
从这里,我发现 ColtOpenIntIntHashMap
和 Trove 的TIntIntHashMap
性能和内存使用比 Java 内置HashMap
或 Guava更好HashMultimap
。
Colt'sOpenIntIntHashMap
或 Trove's 是否TIntIntHashMap
允许具有多个值的键,如HashMultimap
? 如果不是,那么HashMultimap
实现 Colt 或 Trove 的性能和内存效率的好方法是什么?
注意:我已经测试过 Guava 的HashMultimap
,但它的性能和内存效率对我来说似乎很差。
java - 用于存储原始整数的集合,允许更快的 contains() 和有序迭代
我需要一个节省空间的集合来存储大量基元int
(s)(大约 800,000 个整数),它允许快速操作contains()
& 允许按定义的顺序进行迭代。
contains()
检查列表中是否存在 int 的更快操作是主要优先事项,因为这种操作非常频繁。
我愿意使用广泛使用和流行的 3rd 方库,如 Trove、Guava 等。
我看过 Trove 的TIntSet,但我相信这不会让我定义迭代的顺序。
编辑:
集合的大小约为 800,000 个整数。集合中的值范围将从 0 到Integer.Max_VALUE
. 迭代的顺序实际上应该基于我将值添加到集合的顺序,或者我可能只是提供一个有序的 int[] 并且它应该以相同的顺序进行迭代。
java - 有什么方法可以为 trove 的 TIntHashSet 或 TIntIntHashMap 定义迭代顺序?
我可以以某种方式定义 Trove 的TIntHashSet中元素的迭代顺序吗?
Set
或者是允许定义元素迭代顺序的任何其他原语。我想以插入顺序或与用于构造集合的数组相同的顺序迭代元素。