Autor Tema: Metodo mediante libreria Guava sin utilizar ningún bucle java  (Leído 3871 veces)

manuel_coronil

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Me piden implementar un método estático de la forma sin utilizar ningún bucle : El método agrega todas las apps gratis del array apps al conjunto de descargas del usuario u.

public static void descargaAppsGratis(Usuario u, App[] apps){




Por un lado tengo el método getAppsInstaladas().De tipo Set<App> que indica las aplicaciones que el usuario ha descargado e instalado en su plataforma.
Y por otro lado tengo el método getEsGratis().De tipo Boolean ya implementado en el tipo App.

¿Cómo quedaría el método estático anterior? Gracias
« Última modificación: 13 de Septiembre 2014, 19:21 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Metodo mediante libreria Guava
« Respuesta #1 en: 16 de Junio 2014, 20:42 »
Para recorrer una colección lo más habitual es usar un bucle, bien sea un while, un for tradicional o un for each. Por ejemplo si te dicen: dada una lista de 10 números, ¿cuántos de esos números tienen valor 7?

Normalmente se usará un bucle para recorrer los diez números para comprobar cuántos sietes hay.

Otra cosa es si en el api que estás usando existe un método predefinido que te permite obtener el número de veces que aparece un bucle invocando un método.

Por ejemplo: Coleccion.getNumeroApariciones(nombreArrayList, 7) te podría devolver el número de veces que aparece 7 en el ArrayList que pases como parámetro. De esta forma no estás utilizando ningún bucle (en realidad sí lo estás usando, pero digamos que en segundo plano porque es la clase y método que estás invocando quien implementa la operación).

Finalmente, podrías implementar un procedimiento recursivo para recorrer la colección. Esto quizás puedas considerar que formalmente no es un bucle (ya que no utilizarías for, while ni nada parecido).


manuel_coronil

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Metodo mediante libreria Guava
« Respuesta #2 en: 17 de Junio 2014, 16:02 »
Lo siento, pero sigo sin entenderlo. Por mucho que le siga dando vueltas no consigo añadir las apps gratis del array al conjunto de descargas del usuario u. He convertido el array de apps a una lista mediante el método asList() para así conseguir que dicho array se haga iterable.
Despues construyo un Predicate para filtrar dicha lista iterable para descartar todas las apps que no son gratis. Y a partir de aquí no se seguir para añadir las apps gratis del iterable al usuario u.

public static void descargaAppsGratis(Usuario u, App[] apps){

        App[] array = new App[apps.length];
   List<App> lista = new ArrayList<App>();
        lista = Arrays.asList(array);
      
   Iterable<App> itApp = Iterables.filter(lista, new PredicadoAppGratis());
        ...............................................
        ...............................................

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Metodo mediante libreria Guava
« Respuesta #3 en: 17 de Junio 2014, 17:55 »
Quizás la idea del recorrido recursivo te sirva. Si tienes la lista de Apps y tienes que comprobar cuántas Apps cumplen una determinada condición (por ejemplo que el atributo esDePago == false) la idea sería recorrer recursivamente la colección.

Aquí he creado un ejemplo de recorrido recursivo:

https://www.aprenderaprogramar.com/foros/index.php?topic=962.0

Espero te sirva

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".