任何人都有一个很好的经验法则,可以在列表,地图或集合等Java Collection接口的不同实现之间进行选择?
例如,一般为什么或在什么情况下我更喜欢使用Vector或ArrayList,Hashtable或HashMap?
什么是最好的Java原始集合库?(大多数记忆和时间效率)
我发现了Trove和FastUtil是最常用的,但还没有找到他们(或其他人之间)比较多
有比较可用吗?
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,我们有一个引用对象PRESENT,HashMap用于值。虽然存储所需的内存PRESENT可以忽略不计,但我们仍然为映射中的每个值存储对它的引用。
使用null代替不是更有效PRESENT吗?进一步的考虑是我们是否应该HashSet完全放弃而直接使用 a HashMap,因为情况允许使用 aMap而不是 a Set。
我触发这些想法的基本问题是以下情况:我有一组具有以下属性的对象:
HashSet又浮现 …