Java 8 中 Lambda 的一元函数接口

Unary Functional Interface with Lambda in Java 8

我正在学习 Java 8 Lambda 和一元函数式接口。我有一个关于 "Function" class 的练习作业,内容如下:
1) 使用 main 方法
创建一个名为 "FunctionTest" 的 class 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<Set<String>, List<String>> setToList = s -> new ArrayList<String>(s);

或者最好使用方法参考:

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

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