Collection是否比LinkedList更好?

Gra*_*oBe 5 java collections

Collection list = new LinkedList(); // Good?
LinkedList list = new LinkedList(); // Bad?
Run Code Online (Sandbox Code Playgroud)

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

Dil*_*nga 7

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

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

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

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