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;
}
这是我们的专有公共库中的实用方法。它对于创建列表很有用。例如,我可能想要一个包含68个问号的列表来生成大型SQL查询。这使您可以在一行代码中执行此操作,而不是四行代码。
java / apache-commons中是否有一个实用程序类已经执行此操作?我浏览了ListUtils,CollectionUtils,Arrays,Collections,几乎我能想到的一切,但我无法在任何地方找到它。我不喜欢在我的代码中保留通用实用程序方法,如果可能的话,因为它们通常是apache库的冗余。
答案 0 :(得分:14)
collections util类将帮助您
list = Collections.nCopies(length,contents);
或者如果你想要一个可变列表
list = new ArrayList<T>(Collections.nCopies(length,contents));
答案 1 :(得分:1)
Google Guava有以下内容:
newArrayListWithExpectedSize(int estimatedSize)
和
newArrayList(E... elements)
但是你不能同时做两件事,如果它有用的话可能会提交一个补丁。更多信息:
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Lists.html
答案 2 :(得分:0)
您只需将内容作为var-arg传递:
List<String> planets = Arrays.asList( "Mercury", "Venus", "Earth", "Mars" );
请注意,你也可以传入一个数组:
String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
但它是&#34;支持&#34;通过数组,更改数组的内容将反映在列表中:
String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
ps[3] = "Terra";
assert planets.get(3).equals( "Terra" );