3

複合リストを実装したオープンソース ライブラリを探しています。他のリストから値を読み取り、次のように構築できるリストが必要です。

List list1 = new ArrayList();
list1.add("0");
List list2 = new LinkedList();
list2.add("1");
list3.add("2");
List list3 = new CompositeList(list1, list2...)
それから:
assertEquals("0", list3.get(0));
assertEquals("1", list3.get(1));
assertEquals("2", list3.get(2));
アイデアは、ソース リストからすべてをコピーする必要がないということです。

簡単なグーグルでは何も見つかりませんでした.Guavaまたはcommonsコレクションには表示されませんでした(見落とした可能性があります)。今はそれを適切に実装する時間がありません。

4

5 に答える 5

11

今朝、Guavaの内部で似たようなものを探していたところ、最終的にIterables.concat()に遭遇しました。

特にリストビューを要求したため、これで問題が正確に解決されない可能性がありますが、これは覚えておくべき 1 つのオプションです。

また、最初は Collection / List が必要だと思っていましたが、後で問題を解決するために必須ではないことに気付きました。主に、フィルタリング/変換の前に、複数のイテラブル (さまざまな Guava フィルタリング/変換によって取得) を連結するものを探していました。その結果、最終的にImmutableList にダンプします。結果を反復処理するだけでよい場合は、Iterable ビューを返すこともできます。

FluentIterablePS (数年後): これらの変換/連結は、Guavaまたは Java 8 ストリームを使用して実行できるようになりました。

于 2010-11-19T00:26:13.797 に答える
7

Commons CollectionsのCompositeCollectionは、生成されていなくても、必要なことを行っているようです。

于 2010-11-18T15:23:15.907 に答える
1

org.apache.commons.collections15.collection.CompositeCollection を使用できますが、これは汎用です。

http://search.maven.org/#artifactdetails%7Cnet.sourceforge.collections%7Ccollections-generic%7C4.01%7Cjarを参照してください。

于 2012-04-27T18:38:09.140 に答える
0

javakarta コレクション、CompositeCollection を確認します。

http://commons.apache.org/collections/apidocs/index.html

于 2010-11-18T15:38:17.557 に答える