【问题标题】:Unary Functional Interface with Lambda in Java 8Java 8 中与 Lambda 的一元函数式接口
【发布时间】:2018-10-27 19:02:44
【问题描述】:

我正在学习 Java 8 Lambda 和一元函数接口。我有一个关于“功能”类的练习作业,内容如下:
1) 使用 main 方法创建一个名为“FunctionTest”的类
2) 创建一个函数变量并将其称为“setToList”
3) 为 setToList 分配一个 lambda 表达式,其中获取一个 Set 它创建一个 Arraylist 并添加 Set
的所有元素 4) 创建一个 HashSet 并添加以下世界:“Ciao”​​、“Hello”、“Hallo”、“Bonjour”
5) 调用lamda表达式并查看结果

我尝试了以下方式,但它不起作用。特别是,我认为我错了 3) 步骤。我需要了解如何迈出这一步

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Function;

public class FunctionTest {

    public static void main(String[] args) {

        Function<Set, List> setToList = s -> new ArrayList<Set>();
        HashSet<String> hs = new HashSet<String>();
        hs.add("ciao");
        hs.add("hello");
        hs.add("hallo");
        hs.add("bonjour");
        System.out.println(setToList.apply(hs));
    }
}

【问题讨论】:

  • Function&lt;Set&lt;String&gt;, List&lt;String&gt;&gt; setToList = s -&gt; new ArrayList&lt;String&gt;(s);
  • @Eugene 它工作正常!谢谢!请回答,我会评估您的回答!
  • 不明白为什么这个问题被否决了。是的,这是家庭作业,但 OP 已经展示了他迄今为止所做的尝试。
  • @Morgan 是的,我也是!!我不明白!当然,这不是学校的作业!我只是想了解这些东西是如何工作的,并且我会通过一些练习来学习电子学习课程,仅此而已!我写那个hust是为了理解

标签: java lambda java-8 set unary-function


【解决方案1】:

你必须定义它有点不同:

Function<Set<String>, List<String>> setToList = s -> new ArrayList<String>(s);

或者更好地使用方法参考:

Function<Set<String>, List<String>> setToList = ArrayList::new;

不要使用原始类型,而是使用将Collection 作为输入的ArrayList 构造函数

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多