假设我有一个数组 movies = get_movies()
在 ruby 中我经常这样做
movies.map {|电影| movie.poster_image_url }
或类似内容。
在 Java 中我可以做哪些类似的事情?并且同样优雅、简洁和可读。我知道有无数种方法可以做到这一点,但如果有一种很好的方法可以让我不想使用 Groovy 或其他东西,请告诉我。我确信 Java 有一些很棒的方法来做这样的事情。
到目前为止,这是我使用来自 https://github.com/holgerbrandl/themoviedbapi/ 的 TheMovieDB API Java 包装器的 Java 代码.
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());
如果您了解很多 Java 但不熟悉 ruby,请多了解一下 Ruby 中的#map/#collect。 http://ruby-doc.org/core-1.9.3/Array.html#method-i-collect
到目前为止,我通过一些快速浏览看到的最接近回答这个问题的... https://planet.jboss.org/post/java_developers_should_learn_ruby
这些看起来也很接近。 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
这么多选项:Functional Programming in Java
这也是 Android ......有什么好东西可供 Android 开发人员开箱即用并使这种编程变得容易吗?这是一种函数式编程风格,对吧?
--
在收到诸如“for 循环没有任何问题”和(基本上)“语法不是一切”之类的非常好的见解后,我决定不尝试让我的所有 Java 看起来像 Ruby !我读了这篇文章然后想象了另一个 future ,“ future 的我”做出了一大堆糟糕的风格决定:https://github.com/google/guava/wiki/FunctionalExplained . <--(一本好书。TL;DR '当你竭尽全力使你的代码成为“一行代码”时,Guava 团队会哭泣')
最佳答案
流上有一个 map
方法,它接受一个方法参数。
collection.stream()
.map(obj -> obj.someMethod())
.collect(Collectors.toList()));
map
返回另一个流,因此为了检索您调用 collect
方法的列表。
太多无法在帖子中解释,但您可以访问此链接,这对我帮助很大:
关于java - 相当于 Java 中的 Ruby #map 或 #collect 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377347/