java - 相当于 Java 中的 Ruby #map 或 #collect 吗?

标签 java android

假设我有一个数组 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 方法的列表。

太多无法在帖子中解释,但您可以访问此链接,这对我帮助很大:

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

关于java - 相当于 Java 中的 Ruby #map 或 #collect 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377347/

相关文章:

ANDROID-向用户汇款?支付宝

java - 脚本语言转编译语言还是纯编译语言,哪个更快?

java - 查找证书是自签名的还是 CA 签名的

java - 消息驱动bean可以从主机队列中拾取消息吗?

android - 具有弹跳效果的水平 ListView

android - 带有 setStartOffset 的 AnimationSet 不起作用

java - 将字符串解析为包含科学记数法 E 的 Double

java - Spark 结构化流中提交消息

android - 如何在 Android 的 PopupWindow 中设置 ListView 的宽度?

android - 您尚未登录。请登录并重试