方法参数的列表或数组?

时间:2016-01-22 10:08:01

标签: java

我在这里开发一些方法,其中一些方法需要有一个列表作为参数。

我想知道这样做的适当方式是使用List< T>或使用数组[]。

例如:

void method_name(List< String > arg)
void method_name(String arg[])

推荐选项是哪一个?

有人可以帮助我吗?

7 个答案:

答案 0 :(得分:1)

没有推荐或标准选项。列表和数组根本不是相同的对象类型。两者都在Java中使用。您可以执行其中一个或两个(按类型重载)。

答案 1 :(得分:1)

请记住List<T>接口。因此,将List作为参数传递会使您的代码更加灵活,因为它不依赖于List的特定实现。

因此,将List<String>作为参数的方法实际上可以采用ArrayList<String>LinkedList<String>List接口的任何其他实现。所以它甚至可以采用MyList<String>类型的参数,只要类MyList声明它实现了List接口。这样做的好处是,如果您想在代码中的其他位置使用ArrayList更改为LinkedList,则此方法仍然有效。

相比之下,采用String[]的方法只能采用String[]。因此,您不再能够更改在代码中的其他位置存储这些字符串的方式,而无需更改方法。

就谷歌可能在其API中使用数组作为参数的原因而言,我认为这实际上归结为他们使用它们 for

所以我无法推荐其中一个。这实际上取决于方法的作用以及您想要对集合执行的操作。有关现代编程结构(如列表)和良好的老式数组之间的主要差异的概述,请查看this answer

答案 2 :(得分:0)

请记住,有第三种选择,即

void method(String... params)

我可以像数组一样访问,但是大小很灵活,你不必在方法调用之前将所有内容都放入数组中,而是简单地传递所有String

method(string1, string2, string3);

答案 3 :(得分:0)

我认为更受欢迎的是数组参数。 void method_name(String arg []) 你可以从数组中获取任何元素并理解数组中有多少元素。

答案 4 :(得分:0)

我认为您应该使用列表。它速度较慢,但​​它提供了更大的灵活性,并且更易于使用,特别是如果您要调整它们的大小。

答案 5 :(得分:0)

如果你的参数列表是固定的,只需使用你需要的参数

method(String parameter1, String parameter2)

我觉得使用Array很麻烦。有几个缺点:

  • 没有泛型,请参阅here
  • 如果你想要增强它,你必须将整个阵列复制到一个更大的阵列
  • 以及更多取决于您想要做什么

特别是当您想在代码中使用List时,您必须始终复制您的内容。所以我要说List

method(List<String> parameterList)

提到了使用变量参数列表(varargs)的另一种方法。但是,请注意,您无法使用varargs将vararg参数简单地传递到另一个方法,因为vararg参数表示为数组,并将按原样传递。

method1("first", "second");

void method1(String... params) {
  //params[0] will be "first"
  //params[1] will be "second"
  method2(params);
}

void method2(String... params) {
  //params[0] will be an array of Strings
  //params[1] will give you an OutOfBoundsException
}

答案 6 :(得分:0)

这完全取决于您将如何使用这些对象。

时使用列表

1)您将执行排序,搜索等但不想编写多行代码

2)如果元素的大小可能会增加,因为列表可以调整大小。

如果您的要求不符合上述条件,请使用数组。