【问题标题】:What is the equivalent method in Java to map in haskell or select in C#?在 Java 中映射到 haskell 或在 C# 中选择的等效方法是什么?
【发布时间】:2015-07-17 20:28:09
【问题描述】:

Java 中有没有类似于 Haskell 或 Schema 中的 map 函数或 C# 中的 Select extensor 方法的内置函数? 我只是想用更短的方式编写这种代码:

List<String> names = new ArrayList<String>();
foreach (User element : getUsers()) {
   names.add(element.getName());
};
return names; 

更短的方式(在 C# 中)

List<String> names = getUsers().Select(x => x.getName()).ToList();

我还需要一种以“友好”方式将函数作为参数传递的方式。

【问题讨论】:

  • 看看 Java 8 的流。如果您不能使用 Java 8,则创建一个具有您需要的方法签名和匿名类的接口。

标签: java lambda functional-programming


【解决方案1】:

在 Java 8 中,这看起来像

import static java.util.stream.Collectors.toList;

List<String> names = getUsers().stream().map(User::getName).collect(toList());

【讨论】:

    【解决方案2】:

    使用 Java 8 中的流,您可以执行以下操作:

    List<String> names = getUsers().stream().map(User::getName).collect(Collectors.toList())
    

    【讨论】:

    • 为什么要这样做而不是映射流?
    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 2018-04-02
    • 2015-04-25
    • 1970-01-01
    • 2010-10-19
    • 2017-06-12
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多