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
构造函数
我正在学习 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
构造函数