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í.
- Cómo tomar array de json respuesta en java
- Obtenga el código de estado HTTP para las solicitudes correctas con Volley
- Comportamiento diferente de la clase StringBuffer en Java y Android
- OAuth: App Id o redirect_uri no coincide con el código de autorización
- Programación de Android m antes de los objetos
¿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)
- ¿Se asignan automáticamente nuevos subprocesos a un núcleo de CPU diferente en Java?
- ArrayList.Remove no funciona la primera vez que se invoca
- ¿Cómo agregar una biblioteca dinámica a Android?
- El valor del tipo org.json.JSONArray no se puede convertir en JSONObject
- ¿Ha utilizado alguien la biblioteca IAX24 J para las llamadas entrantes?
- "No hacer nada" con el operador ternario
- No se puede resolver el destino 'android-8' después de importar las bibliotecas
- Ayuda para obtener String Array desde el archivo arrays.xml
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:
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 burlar MotionEvent y SensorEvent para la prueba de unidad en android?
- Android, ¿cómo establecer los metadatos en el archivo MP4?