我什么时候应该使用接口List <>而不是Collection <>

Dan*_*roa 5 java collections interface

我的问题几乎就是组成标题的oneliner.何时适合使用List interface而不是Collection interface

这只是一个关于清晰度和可读性的问题,即如果我使用ListCollection依赖于我的代码,或者还有其他一些我不知道的优点,代码的意图会更清楚吗?

Hot*_*cks 5

人们可以争论任何一种方式,当然,假设您不依赖于 List 的方法/功能,并且您将调用的其他方法都不期望 List。

有人认为最好使用适合工作的最通用类型,以允许代码修改/重用,这可能会导致切换到非列表类。

还有一种观点认为,最好使用包含所有计划用途的最具体类型,以便在计划用途范围内拥有最大的功能和灵活性。使用更具体的类型也是一种自我文档,因为它表明代码功能的狭窄性。

根据我的经验,代码重用的好处往往被夸大了,而且在为多种用途而开发的代码库之外很少能取得成果。所以我倾向于使用更具体的类型。


Sur*_*tta 3

当您需要以下福利时:

\n
\n

除了从 Collection 继承的操作之外,List 接口还包括以下操作:

\n
\n

列为

\n
\n

位置访问 \xe2\x80\x94 根据元素在列表中的数字位置来操作元素

\n

搜索 \xe2\x80\x94 在列表中搜索指定对象并返回其数字位置

\n

迭代 \xe2\x80\x94 扩展了迭代器语义以利用列表的顺序性质

\n

范围视图 \xe2\x80\x94 对列表执行任意范围操作。

\n
\n