2

我正在学习 Java 8 Lambda 和一元功能接口。我有一个关于“Function”类的练习作业,其中包含以下文本:
1)使用 main 方法创建一个名为“FunctionTest”的类
2)创建一个 Function 变量并将其称为“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));
    }
}
4

1 回答 1

2

你必须定义它有点不同:

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

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

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

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

于 2018-05-17T13:33:38.430 回答