Java 是否有一种实用方法可用于创建具有指定大小和内容的列表? 公共静态列表重复(T内容,int长度){ 列表=新的ArrayList(); for(int i=0;i

Java 是否有一种实用方法可用于创建具有指定大小和内容的列表? 公共静态列表重复(T内容,int长度){ 列表=新的ArrayList(); for(int i=0;i,java,apache-commons,utility,utility-method,Java,Apache Commons,Utility,Utility Method,这是我们专有的commons库中的一种实用方法。它对于创建列表很有用。例如,我可能需要一个包含68个问号的列表来生成一个大型SQL查询。这使您可以在一行代码中完成,而不是在四行代码中完成 java/apache commons中是否有一个实用程序类已经做到了这一点?我浏览了ListUtils、CollectionUtils、数组、集合,几乎所有我能想到的东西,但我在任何地方都找不到。如果可能的话,我不喜欢在代码中保留泛型实用程序方法,因为它们通常与apache库是冗余的。Google Guava

这是我们专有的commons库中的一种实用方法。它对于创建列表很有用。例如,我可能需要一个包含68个问号的列表来生成一个大型SQL查询。这使您可以在一行代码中完成,而不是在四行代码中完成


java/apache commons中是否有一个实用程序类已经做到了这一点?我浏览了ListUtils、CollectionUtils、数组、集合,几乎所有我能想到的东西,但我在任何地方都找不到。如果可能的话,我不喜欢在代码中保留泛型实用程序方法,因为它们通常与apache库是冗余的。

Google Guava有以下几点:

public static <T> List<T> repeat(T contents, int length) {
    List<T> list = new ArrayList<T>();
    for (int i = 0; i < length; i++) {
        list.add(contents);
    }
    return list;
}
以及:

但你不能两者兼而有之,如果它有用的话,也许可以提交一个补丁。更多信息请点击此处:


集合实用程序类将帮助您:

newArrayList(E... elements)
或者,如果您想要一个可变列表:

list = Collections.nCopies(length,contents);
list=newarraylist(Collections.nCopies(长度、内容));
//或者任何您想要的列表实现。
怎么样

您只需将内容作为:

列出行星=阵列。asList(“水星”、“金星”、“地球”、“火星”);
请注意,您也可以传入数组:

List<String> planets = Arrays.asList( "Mercury", "Venus", "Earth", "Mars" );
String[]ps=新字符串[]{“水星”、“金星”、“地球”、“火星”};
列表行星=数组.asList(ps);
但它是由数组“支持”的,因为更改数组的内容将反映在列表中:

String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
String[]ps=新字符串[]{“水星”、“金星”、“地球”、“火星”};
列表行星=数组.asList(ps);
ps[3]=“Terra”;
断言行星。得到(3)。等于(“Terra”);

Arrays.fill是否适合您?Arrays.fill在这里会有点笨拙,它适合一个稍微不同的角色。谢谢,这正是我所缺少的!我不确定在上下文中,这与使用array.asList()有多大区别。上面提到的Collections.nCopies()方法非常适合,因此我将使用它。
List<String> planets = Arrays.asList( "Mercury", "Venus", "Earth", "Mars" );
String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
ps[3] = "Terra";
assert planets.get(3).equals( "Terra" );