Equivalente de Ruby #map o #collect en Java?

Digamos que tengo una matriz movies = get_movies()

En ruby ​​a menudo hago movies.map {|movie| movie.poster_image_url } movies.map {|movie| movie.poster_image_url } o algo así.

¿Qué puedo hacer que sea similar en Java? Y por similarmente elegante, concisa y legible. Sé que hay una manera bazillion que puedo hacer esto pero si hay una manera agradable de hacer esto que me haga no desear utilizar Groovy o algo déjeme saber. Estoy seguro de que Java tiene algunas maneras impresionantes de hacer cosas como esta.

Este es mi código Java hasta ahora usando TheMovieDB API Java wrapper de https://github.com/holgerbrandl/themoviedbapi/ .

  TmdbMovies movies = new TmdbApi(BuildConfig.MOVIEDB_API_KEY).getMovies(); MovieResultsPage results = movies.getPopularMovieList("en", 1); // The following line is RubyJava and needs to your help! results.getResults().map {|e| e.getPosterPath() }; // or ... more RubyJava results.getResults().map(&:getPosterPath()); 

Un poco más sobre # map / # recoger en Ruby en caso de que conozcas un montón de Java, pero no están familiarizados con ruby. Http://ruby-doc.org/core-1.9.3/Array.html#method-i-collect

La cosa más cercana que he visto para responder a esto de alguna navegación rápida hasta el momento … https://planet.jboss.org/post/java_developers_should_learn_ruby

Estos miran cerca, también. Http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

Tantas opciones: Programación Funcional en Java

Esto también es Android … Cualquier cosas buenas que están disponibles para los desarrolladores de Android fuera de la caja y hacer este tipo de programación fácil? Este es un estilo de programación funcional, ¿verdad?

Después de obtener respuestas con muy buenas ideas como: 'no hay nada malo con un bucle for' y (básicamente) 'sintaxis no es todo', estoy decidiendo que no voy a tratar de hacer que todo mi Java se parece a Ruby! Leí esto y luego imaginé un futuro alternativo donde 'futuro me' hizo un montón de decisiones de estilo malo: https://github.com/google/guava/wiki/FunctionalExplained . <- (Una buena lectura, TL, DR "cuando vas a longitudes absurdas para hacer que tu código sea" un solo revestimiento ", grita el equipo de la Guayaba)

Hay el método del map en los arroyos que toma un argumento del método.

 collection.stream() .map(obj -> obj.someMethod()) .collect(Collectors.toList())); 

map devuelve otra secuencia de modo que para recuperar la lista que ha llamado el método de collect .

Demasiado para explicar en un post, pero puedes visitar este enlace que me ayudó mucho:

http://winterbe.com/posts/2014/03/16/java-8-tutorial/

Creo que (una clase de colecciones) .foreach () es lo que quieres, requiere java8, ya menudo hace uso de expresiones lambda para implementar la clase que cumple con la entrada requerida para el método foreach ().

http://www.mkyong.com/java8/java-8-foreach-examples/


Para hacer frente a su cambio a que esto es Android, entonces NO, NO obtendrá cambios de clase java8 como .foreach (), puede obtener expresiones lambda haciendo uso de la variante retrolambda android . Pero esto sólo te da algunos Java8 'sintaxis' no 'clases', no obtendrá acceso a las clases Streams tampoco.

  • ¿Cómo descomprimir archivos zip AES-256 encriptados?
  • Hilo saliendo con excepción no captada
  • android.support.v4.app.FragmentTransaction necesario
  • Usando Volley en Android 2.3.3 y obteniendo SSLHandshakeException
  • ¿Cómo puedo crear una expresión regular para esto en android?
  • Reflexión para acceder a funciones avanzadas de telefonía
  • ¿Cómo puedo detectar si un sprite fue tocado en Java libGDX?
  • Android - No se puede obtener la ubicación del GPS en el emulador
  • "Llamada de método esperado" error en el método length de matriz int
  • Detección de frecuencia / tono para maniquíes
  • ¿Puedo acceder a los datos almacenados en AsyncStorage de React Native desde la capa java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.