我在这里开发一些方法,其中一些方法需要有一个列表作为参数。
我想知道这样做的适当方式是使用List< T>或使用数组[]。
例如:
void method_name(List< String > arg)
void method_name(String arg[])
推荐选项是哪一个?
有人可以帮助我吗?
答案 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
很麻烦。有几个缺点:
特别是当您想在代码中使用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)如果元素的大小可能会增加,因为列表可以调整大小。
如果您的要求不符合上述条件,请使用数组。