4
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;
}

これは、独自のコモンズライブラリのユーティリティメソッドです。リストの作成に便利です。たとえば、大きなSQLクエリを生成するための68個の疑問符のリストが必要な場合があります。これにより、4行のコードではなく、1行のコードでそれを行うことができます。

java / apache-commonsのどこかに、すでにこれを行っているユーティリティクラスがありますか?ListUtils、CollectionUtils、Arrays、Collectionsなど、考えられるほとんどすべてのものを閲覧しましたが、どこにも見つかりませんでした。可能であれば、一般的なユーティリティメソッドをコードに保持するのは好きではありません。これらは通常、apacheライブラリと重複しているためです。

4

3 に答える 3

16

ユーティリティクラスは次のCollectionsことに役立ちます。

list = Collections.nCopies(length,contents);

または、変更可能なリストが必要な場合:

list = new ArrayList<T>(Collections.nCopies(length,contents));
           // or whatever List implementation you want.
于 2011-05-26T17:11:33.160 に答える
1

GoogleGuavaには次のものがあります。

newArrayListWithExpectedSize(int estimatedSize)

と:

newArrayList(E... elements)

ただし、両方を行うことはできません。役立つ場合は、パッチを送信してください。詳細はこちら:

http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Lists.html

于 2011-05-26T17:09:56.597 に答える
0

どうjava.util.Arrays.asListですか?

内容を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 );

ただし、配列の内容の変更がリストに反映されるという点で、配列によって「サポート」されています。

String[] ps = new String[]{ "Mercury", "Venus", "Earth", "Mars" };
List<String> planets = Arrays.asList( ps );
ps[3] = "Terra";
assert planets.get(3).equals( "Terra" );
于 2016-04-26T21:26:33.653 に答える