me gustaría aplanar anidadas colecciones/estructuras arbitrarias de elementos de algún tipo T en Java, de forma óptima concon seguridad de tipos de colecciones/estructuras anidadas en Java
- sólo tener una vista en vivo y no una colección copiada;
- no solo manejando colecciones, sino también iterador, matrices de T de dimensión arbitraria, Iterable, y todas estas estructuras arbitrariamente mezcladas y anidadas;
- statical type-safety.
¿Hay una biblioteca de Java que pueda manejar esto?
Guava parece sólo para manejar un nivel de anidamiento, es decir Collection<Collection<T>>
--flatten ->Collection<T>
.
lambdaj parece prometedor: ¿hay algún modo combinar on()
, flattenIterator()
asIterator()
y para lograr esto? De una manera estática tipo seguro?
No se basa en ninguna de las anteriores, pero tal vez una clase 'DeepIterator' que se construye con una' Colección' cuyo método 'next()' mira el siguiente 'Object' y si es' instanceof Collection' then empuja el 'iterator' actual en' Stack' y recurre en el iterador de 'Collection'. –
Sí, he implementado algunos iteradores de esa manera. Sin embargo, tener que hacer una distinción de caso para matrices de dimensiones arbitrarias e iteradores es bastante complicado. Y no hay seguridad de tipo estático :(Dado que lambdaj probablemente lo implementa al menos tan bien, no creo que deba hacer esa implementación ... – DaveFar
¿Qué quiere decir seguridad de tipo estático aquí? Desde la Colección (ADG en realidad) puede contener elementos de diferentes tipos, el iterador solo puede proporcionar 'Objetos'. ¿Me falta algo? –