【发布时间】:2018-04-26 01:10:44
【问题描述】:
这里有两种方法。test1()和test2()
public class MoreStreams {
public static void main(String[] args) {
List<String> names = Arrays.asList("Brad", "Kate", "Kim", "Jack",
"Joe", "Mike", "Susan", "George", "Robert", "Julia", "Parker", "Benson");
test1(names);
//test2(names);
}
private static void test1(List<String> names) {
List<String> result = names.stream()
.map(name -> sub(toUpper(toLower(name))))
.collect(Collectors.toList());
System.out.println(result);
}
private static void test2(List<String> names) {
List<String> result = names.stream()
.map(MoreStreams::toLower)
.map(MoreStreams::toUpper)
.map(MoreStreams::sub)
.collect(Collectors.toList());
System.out.println(result);
}
private static String toUpper(String name) {
System.out.println("to Upper: " + name);
return name.toUpperCase();
}
private static String toLower(String name) {
System.out.println("to Lower: " + name);
return name.toLowerCase();
}
private static String sub(String name) {
System.out.println("to Title: " + name);
return name.substring(1);
}
}
第一个使用多个map(),第二个将所有逻辑聚合到一个map()中,它们是否花费相同的时间,为什么?
如果链中有更多map()s 怎么办?请帮帮我。
【问题讨论】:
-
高性能是一个严重的问题吗?如果没有,请关注可读性。
-
你测试了吗?
标签: java functional-programming java-stream