Java-Better Programming Practice中的集合

时间:2011-12-05 07:05:32

标签: java collections arraylist

在大多数使用集合的Java代码中,我都会看到类似的内容。

List<String> list = new ArrayList<String>(); 

但我总是想知道为什么它比

更受欢迎
ArrayList<String> = new ArrayList<String>();

我研究了一下但是不能理解很多。

3 个答案:

答案 0 :(得分:10)

因为通过其界面使用对象时,您可以稍后更改实现。例如:

public ArrayList<String> doSomething(..) {
    ...
    return arrayList;
}

但过了一段时间后,ArrayList对于此方法的调用者主要使用的内容效率低下,因此您决定将其更改为LinkedList

  • 如果您的方法只返回List,那么
  • 如果您的方法返回ArrayList,您应该转到调用该方法的所有位置并更改它。如果有人使用某些特定于arraylist的方法会怎样 - 你必须考虑如何重构它。这是一个很好的方案。如果您的代码是库,而其他分支机构/公司正在使用它,您可能会遇到效率低下的代码。

另见:

答案 1 :(得分:2)

答案 2 :(得分:1)

鉴于Java是一种强类型语言,因此对接口进行编程始终被认为是最佳实践(当然,在合理范围内)。这样做可以让您稍后更换实现。

对于方法参数尤其如此,因为它不会将您绑定到特定实现。也许您在一个案例中使用ArrayList,但在其他地方使用LinkedList