我想知道为什么什么时候构建一个LinkedHashMap客户端代码可以指定是否访问命令期望loadFactor
? 这个设计有什么特别的原因,而不是使用默认的因子?为什么在构造函数中指定访问顺序时传递加载因子?
-1
A
回答
0
有时候事情会“发生”。除此之外:
设计库API时,必须平衡简单性和“功能计数”。含义:当然,你可以创建大量的构造函数,允许你设置所有的标志。但是这会导致构造函数的个数增加。而这通常不是你想要的。
在这个意义上:如果你真的愿意碰插入顺序标志链接的哈希映射......那么你已经采取了“非常特别的路线”。然后API的创建者(可能)决定给你一个特殊的构造函数,而不是更高的数字。
+0
你所说的都是明智的,但他们在文档中声明所使用的用法是一个LRU。 LRU是一个比哈希表更高层次的抽象。所以我认为具有专门用于LRU的构造函数并留下合理的默认值是有道理的。无论如何,我想知道我是否错过了一些东西 – Jim
相关问题
- 1. 为什么序列化可以访问私有构造函数?
- 2. 子类构造函数 - 为什么必须为子类构造函数存在默认构造函数?
- 3. 在构造函数中传递子类作为参数
- 4. 为什么DomainService构造函数重载显示为DomainContext构造函数重载?
- 5. 为什么在通过值传递给函数并将值传递给另一个构造函数时,构造函数的调用有什么区别?
- 6. 什么作为参数传递给构造函数从超类
- 7. 什么作为字符串参数传递给构造函数?
- 8. 为什么构造函数按相反顺序调用?
- 9. 为什么$ db PDO对象在构造函数参数中作为null传递?
- 10. 从基类构造函数访问子构造函数
- 11. 为什么allocator在构造函数中?
- 12. 构造函数初始化顺序和引用传递
- 13. 为什么构造函数未定义?
- 14. 如何传递指向构造函数的函数指针?
- 15. 通过构造函数传递什么以及通过接口传递什么?
- 16. 为什么构造函数在值传递时没有被调用
- 17. 如何在构造函数中访问构造函数成员?
- 18. 在构造函数中传递对象
- 19. 我应该在DuplexClientBase构造函数的“endpointConfigurationName”中指定什么?
- 20. Java:为什么构造函数具有访问修饰符?
- 21. 传递给构造函数时出错
- 22. 传递函数为超级构造
- 23. 为什么不能在另一个构造函数的主体中访问构造函数?
- 24. 构造函数参数在传递给超级构造函数时会丢失
- 25. 在反应中使用构造函数时传递附加参数函数
- 26. 在jQuery.proxy中传递的附加参数的顺序是什么?
- 27. 为什么我不能在ArgoUML中重载类构造函数
- 28. 为什么我不能将函数传递给Function构造函数?
- 29. 构造函数和传递参数有什么区别?
- 30. 在IIFE中访问构造函数
他们可能会决定添加另一个构造函数(用于构造实例的所有可能方法的组合爆炸)并没有带来它的重量。 –
如果您查看[构造函数列表](https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html#constructor.summary),您会注意到它已启动(')'no-arg版本,并且具有'(int initialCapacity,float loadFactor,boolean accessOrder)'的完整版本,以及两个便利版本。要有这3个参数的所有组合的构造函数,应该有4个更多的构造函数,并且他们决定不这样做,可能是因为如果所有8个组合都存在,会导致混淆构造函数。 – Andreas
@Andreas:这个类是用来作为LRU的。为了实现这个目标,我们需要能够指定驱逐策略(插入vs访问顺序)。考虑到缺省值插入时没有任何加载因子的配置,我发现当我们指定顺序时,他们选择指定对哈希表性能如此重要的事情是非常奇怪的事情?这种改变是如何基于驱逐政策的? – Jim