Java-Better Programming Practice中的集合

Anu*_*uri 3 java collections arraylist

在大多数使用集合的Java代码中,我看到类似的东西.

List<String> list = new ArrayList<String>(); 
Run Code Online (Sandbox Code Playgroud)

但我总是想知道为什么它更受欢迎

ArrayList<String> = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

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

Boz*_*zho 10

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

public ArrayList<String> doSomething(..) {
    ...
    return arrayList;
}
Run Code Online (Sandbox Code Playgroud)

但是经过一段时间后ArrayList,这种方法的调用者主要使用它似乎效率低下,因此您决定将其更改为LinkedList.

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

也可以看看:

  • 一般的经验法则是使用一种特定的类型 - 而不是更多.因此,如果您需要特定于LinkedList的方法,请将其键入LinkedList而不是List; 如果您不需要任何特定于列表的方法,您可能最好将其键入Collection而不是List. (2认同)