java – Collection是否比LinkedList更好?

Collection list = new LinkedList(); // Good?
LinkedList list = new LinkedList(); // Bad?

第一个变体提供了更大的灵活性,但这一切都是?还有其他理由喜欢它吗?性能怎么样?

最佳答案
这些是设计决策,一种尺寸通常不适合所有.内部用于成员变量的内容的选择可以(并且通常应该)与暴露给外部世界的内容不同.

从本质上讲,Java的集合框架不提供描述性能特征的完整接口集,而不会暴露实现细节.一个描述性能的接口,RandomAccess是一个标记接口,甚至不扩展Collection或重新公开get(index)API.所以我认为没有一个好的答案.

根据经验,我认为类型尽可能不具体,直到我认识到(并记录)一些重要的特征.例如,只要我想让方法知道保留了插入顺序,我就会从Collection更改为List,并记录为什么该限制很重要.同样,如果说从前面有效删除变得很重要,则从List移动​​到LinkedList.

当涉及在公共API中公开集合时,我总是尝试开始暴露几个预期会被使用的API;例如add(…)和iterator().

转载注明原文:java – Collection是否比LinkedList更好? - 代码日志