相关疑难解决方法(0)

选择Java Collection实现的经验法则?

任何人都有一个很好的经验法则,可以在列表,地图或集合等Java Collection接口的不同实现之间进行选择?

例如,一般为什么或在什么情况下我更喜欢使用Vector或ArrayList,Hashtable或HashMap?

java collections heuristics

57
推荐指数
6
解决办法
2万
查看次数

最高效的Java原始集合库

什么是最好的Java原始集合库?(大多数记忆和时间效率)

我发现了Trove和FastUtil是最常用的,但还没有找到他们(或其他人之间)比较多

有比较可用吗?

java collections performance primitive-types

37
推荐指数
3
解决办法
2万
查看次数

我们应该使用 HashSet 吗?

HashSet 由 HashMap 支持。从它的JavaDoc:

该类实现了 Set 接口,由一个哈希表(实际上是一个 HashMap 实例)支持

在查看来源时,我们还可以看到它们之间的关系:

// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}
Run Code Online (Sandbox Code Playgroud)

因此 aHashSet<E>由 a 支持HashMap<E,Object>。对于我们应用程序中的所有 HashSet,我们有一个引用对象PRESENTHashMap用于值。虽然存储所需的内存PRESENT可以忽略不计,但我们仍然为映射中的每个值存储对它的引用。

使用null代替不是更有效PRESENT吗?进一步的考虑是我们是否应该HashSet完全放弃而直接使用 a HashMap,因为情况允许使用 aMap而不是 a Set

我触发这些想法的基本问题是以下情况:我有一组具有以下属性的对象:

  • 大量物品 > 30'000
  • 广告订单不相关
  • 有效检查是否包含项目
  • 向集合中添加新项目无关紧要 选择的解决方案应在满足上述条件的上下文中执行最佳,并最大限度地减少内存消耗。在此基础上,数据结构HashSet又浮现 …

java collections hashmap hashset

5
推荐指数
1
解决办法
4173
查看次数