Java中嵌套集合/结构的类型安全展平

时间:2011-09-15 12:41:55

标签: java generics collections type-safety lambdaj

我想在Java中压缩某些类型T的元素的任意深层嵌套集合/结构,最好用

  • 只有实时视图而不是复制的集合;
  • 不仅处理集合,还有迭代器,任意维度的T数组,Iterable,以及任意混合和嵌套的所有这些结构;
  • 静态类型安全。

是否有可以处理此问题的java库?


Guava似乎只处理一个嵌套级别,即Collection<Collection<T>> --flatten - &gt; Collection<T>

lambdaj看起来很有希望:我可以以某种方式合并on()asIterator()flattenIterator()来实现这一目标吗?以静态类型安全的方式?

3 个答案:

答案 0 :(得分:2)

Guava最终可能会支持

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

(从底部向上阅读可能最容易,因为它的思考在其生命周期中已经移动了几次。)

答案 1 :(得分:1)

不是基于上述任何一种,但可能是一个DeepIterator类,它使用Collection构造,其next()方法查看下一个Object,如果它是一个instanceof,则将当前迭代器推送到Stack并递归到集合的迭代器。

答案 2 :(得分:0)

我认为这可能有所帮助:Arrays.deepToString(myCollection.toArray())