Saludos, me piden implementar una serie de métodos utilizando las clases Iterables, Iterables2, factorías de colecciones y todo lo relacionado con tratamiento de agregados con guava. En este caso me piden implementar dichos método pudiendo utilizar un sólo bucle.
public static Map<TipoSO,Double> tamañoPorTipoSO(Set<EmpresaDesarrolladoraIterable> sDes){
Dado el conjunto sDes, devuelve un Map en el que las claves son el tipo de sistema operativo, y los valores son la suma de los tamaños de las aplicaciones de ese sistema operativo.
La cuestión es que el tipo de sistema operativo y el tamaño de las apps son propiedades básicas del tipo App, no de EmpresaDesarrolladoraIterable, aunque ésta sea un subtipo de Iterable<App> y de EmpresaDesarrolladora.
Dejo el código de cómo empezaría y a partir del bucle for(Solo puedo utilizar un solo bucle) es dónde estoy liado ya que no se como inicializar la clave y los valores del Map<K,V>.
public static Map<TipoSO,Double> tamañoPorTipoSO(Set<EmpresaDesarrolladoraIterable> sDes){
Preconditions.checkNotNull(sDes);
Map<TipoSO,Double> tamañoPorTipoSO = Maps.newHashMap();
for(EmpresaDesarrolladoraIterable emp : sDes){
...........................................
...........................................
}
return tamañoPorTipoSO;
}