創建pojo
public class UserDemo {
private String id;
private String name;
private Integer age;
// 自行補充get/set方法
}
例子
package com.wu.parker.common.demo.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* 函數式編程例子
* @author wusq
* @date 2019/4/20
*/
public class StreamMain {
static List<UserDemo> userDemoList;
/**
* 初始化集合
*/
static void init(){
userDemoList = new ArrayList<>();
UserDemo a = new UserDemo();
a.setId("a");
a.setName("user-a");
a.setAge(28);
userDemoList.add(a);
UserDemo b = new UserDemo();
b.setId("b");
b.setName("user-b");
b.setAge(18);
userDemoList.add(b);
UserDemo c = new UserDemo();
c.setId("c");
c.setName("user-c");
c.setAge(38);
userDemoList.add(c);
}
/**
* 過濾年齡小於20的數據
*/
static void filter(){
userDemoList = userDemoList.stream().filter(o -> o.getAge() < 20).collect(Collectors.toList());
}
/**
* 獲取id的List
*/
static void getIdList(){
List<String> list = userDemoList.stream().map(UserDemo::getId).collect(Collectors.toList());
list.forEach(o -> System.out.println(o));
}
/**
* 拼接ID
*/
static void joinId(){
String ids = userDemoList.stream().map(UserDemo::getId).collect(Collectors.joining(","));
System.out.println(ids); // 輸出a,b,c
// 加上前後綴
ids = userDemoList.stream().map(UserDemo::getId).collect(
Collectors.joining(",", "prifix-", "-suffix"));
System.out.println(ids); // 輸出prifix-a,b,c-suffix
}
/**
* 年齡排序
*/
static void sort(){
Collections.sort(userDemoList, Comparator.comparing(UserDemo::getAge));
}
/**
* 年齡求和
*/
static void sum(){
int amout = userDemoList.stream().map(UserDemo::getAge).reduce(Integer::sum).get();
System.out.println(amout);
}
/**
* 打印
*/
static void print(){
userDemoList.forEach(o -> System.out.println(o.getId() + o.getName() + o.getAge()));
}
public static void main(String[] args) {
init();
filter();
// joinId();
// sort();
// sum();
// getIdList();
print();
}
}
源代碼:https://github.com/wu-boy/parker parker-common模塊。
參考資料:《Java8函數式編程》,譯者王羣鋒。