Lambda表达式的各种用法。
集合遍历对比
public static void main(String[] args) {
// 普通循环
List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) {
System.out.println(s);
}
// Lambda表达式 循环
list.forEach(s -> System.out.println(s));
}
list排序
public static void main(String[] args) {
// 普通
List<String> list = Arrays.asList("a", "b", "c");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2););
}
});
// Lambda表达式
Collections.sort(list, ( o1, o2) -> o1.compareTo(o2));
}
list过滤
public static void main(String[] args) {
// 普通 找出a开头的数据
List<String> list = Arrays.asList("a1", "b1", "c1");
List<String> list2 = new ArrayList<>();
for (String s : list) {
if(s.startsWith("a")){
list2.add(s);
}
}
// Lambda表达式
list2 = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
}
映射提取转换
public static void main(String[] args) {
List<String> list = Arrays.asList("a1", "b1", "c1");
// 普通 映射转换
List<Integer> list2 = new ArrayList<>();
for (String s : list) {
list2.add(s.length());
}
// Lambda表达式
list2 = list.stream().map(s -> s.length()).collect(Collectors.toList());
}
累加计算
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 普通 求和计算
int sum = 0;
for (Integer i : list) {
sum += i;
}
// Lambda表达式
sum = list.stream().reduce(0,(a,b) -> a + b );
}
分组
public static void main(String[] args) {
// 首字母分组
List<String> list = Arrays.asList("a1", "a2", "c1", "c2", "e1", "e2", "e3", "e4");
Map<String,List<String>> groups = new HashMap<>();
for (String s:list){
String start = s.substring(0,1);
if (groups.containsKey(start)){
groups.get(start).add(s);
}else {
List<String> l = new ArrayList<>();
l.add(s);
groups.put(start,l);
}
}
// Lambda表达式
groups = list.stream().collect(Collectors.groupingBy(s -> s.substring(0, 1)));
System.out.println(groups);
}
函数编程
package com.jc.config;
interface MyInterface {
public void action(String a);
}
public class Test {
public static void main(String[] args) {
MyInterface myInterface = new MyInterface() {
@Override
public void action(String a) {
System.out.println("hello" + a);
}
};
myInterface.action("world1");
myInterface = (a) -> System.out.println("hello" + a);
myInterface.action("world");
}
}
流水线操作
public static void main(String[] args) {
// 过滤 a开头 转大写,在排序,
List<String> list = Arrays.asList("a", "b", "c");
List<String> resultList = list.stream().
filter(s -> s.startsWith("a")).
map(String::toUpperCase).
sorted().
collect(Collectors.toList())
}