Functional Programming in JAVA
最近觉得需要补一补java语言基础知识,java8出来很久了,平时也经常看到身边的人在用,就从这里开始吧,看书的同时做一些纪录。
书名是《Functional Programming in JAVA》,第一章的内容主要是讲述函数式编程与之前的方式相比到底有些什么好处,用一些简单的例子让大家理解什么是函数式编程;从第二章开始讲述java8里具体增加的东西。这一系列文章先从第二章开始,首先介绍“怎么使用”,后面再补充“为什么要这么用”。
Collections
1. list遍历
首先创建不可变集合list friends:
final List friends = Arrays.asList("Brian","Nate","Neal","Raju","Sara","Scott");
JDK8之前的方式遍历list:
方法一:
for(inti = 0; i < friends.size(); i++) {
System.out.println(friends.get(i));
}
方法二:
for(String name : friends) {
System.out.println(name);
}
JDK8中的方式演变过程:
方法一:
friends.forEach(newConsumer() {
public void accept(final String name) {
System.out.println(name);
}
});
方法二:
friends.forEach((final String name) ->System.out.println(name));
方法三:
friends.forEach((name) ->System.out.println(name));
方法四:
friends.forEach(name ->System.out.println(name));
方法五:
friends.forEach(System.out::println);
2. list修改
还是以list friends为例,将friends中所有的字母都变成对应的大写字母。
JDK8之前的方式:
方法一:
final List uppercaseNames =new ArrayList();
for(String name : friends) {
uppercaseNames.add(name.toUpperCase());
}
JDK8中的方式演变过程:
方法一:
final List uppercaseNames =new ArrayList();
friends.forEach(name -> uppercaseNames.add(name.toUpperCase()));
System.out.println(uppercaseNames);
方法二:
friends.stream()
.map(name -> name.toUpperCase())
.forEach(name ->System.out.print(name +" "));
System.out.println();
方法三:
friends.stream()
.map(String::toUpperCase)
.forEach(name ->System.out.println(name));
3.list查找
在friends中查找以N开头的元素:
JDK8之前的方式:
final List startsWithN =new ArrayList();
for(String name : friends) {
if(name.startsWith("N")) {
startsWithN.add(name);
}
}
JDK8中的方式演变过程:
方法一:
final List startsWithN =friends.stream()
.filter(name -> name.startsWith("N"))
.collect(Collectors.toList());