10

Java で、あるタイプ T の要素の任意の深くネストされたコレクション/構造を最適にフラット化したいと思います。

  • コピーされたコレクションではなく、ライブビューのみがあります。
  • コレクションだけでなく、Iterator、任意の次元の T の配列、Iterable、およびこれらすべての構造を任意に混合してネストすることもできます。
  • 静的型安全。

これを処理できるJavaライブラリはありますか?


GuavaCollection<Collection<T>>は、 --flatten-->という 1 つのネスト レベルのみを処理するようCollection<T>です。

lambdajは有望に見えます: どうにかして を組み合わせてon()、これasIterator()flattenIterator()達成することはできますか? 静的にタイプセーフな方法で?

4

3 に答える 3

2

Guavaはおそらくこれを最終的にサポートするでしょう:

http://code.google.com/p/guava-libraries/issues/detail?id=174

(それについての考え方はその生涯にわたって数回シフトしたので、それを下から上に読むのが最も簡単かもしれません。)

于 2011-09-16T03:57:51.333 に答える
1

上記のいずれにも基づいていませんが、おそらく、next() メソッドが次のオブジェクトを参照し、それが Collection のインスタンスである場合は、現在の反復子を Stack にプッシュし、その Collection の反復子に再帰する Collection で構築された DeepIterator クラスです。

于 2011-09-15T13:48:45.717 に答える
0

これが役立つと思います:Arrays.deepToString(myCollection.toArray())

于 2011-09-15T13:34:11.543 に答える