Lamda表达式
一、基本使用
1、没有参数,没有返回值
2、有一个参数,没有返回值
3、有多个参数.没有返回值
4、没有参数,有返回值
5、有一个参数,有返回值
6、有多个参数,有返回值
二、集合操作
1、遍历集合
@Test
public void myTest1(){
List<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
strings.stream().forEach(item->{
System.out.println(item+" ");
});
}
2、改数据并赋值给另一个集合
@Test
public void myTest2(){
List<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
List<String> list=new ArrayList<>();
list=strings.stream().map(item->item.toUpperCase()).collect(Collectors.toList());
list.stream().forEach(item->{
System.out.println(item);
});
}
3、对集合的过滤处理
@Test
public void myTest3(){
List<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
List<String> list =new ArrayList<>();
list=strings.stream().filter(item->item.equals("c")).collect(Collectors.toList());
list.stream().forEach(item->{
if(item.equals("c")){
System.out.println("我拦截了c");
}else{
System.out.println("我没有拦截"+item);
}
});
}
4、求集合中的max,min,count,avg
@Test
public void myTest4(){
List<Integer> strings = new ArrayList<>();
strings.add(1);
strings.add(2);
strings.add(3);
strings.add(4);
IntSummaryStatistics stat=strings.stream().mapToInt((item)->item).summaryStatistics();
System.out.println("max:"+stat.getMax());
System.out.println("min:"+stat.getMin());
System.out.println("sum:"+stat.getSum());
System.out.println("count:"+stat.getCount());
System.out.println("average:"+stat.getAverage());
}
5、List转化为Map(方式一)
@Test
public void myTest5(){
List<Account> strings = new ArrayList<>();
strings.add(new Account(1,"a"));
strings.add(new Account(2,"b"));
strings.add(new Account(3,"c"));
strings.add(new Account(4,"d"));
Map<Integer, String> map = strings.stream().collect(Collectors.toMap(Account::getId, account -> {
return account.getName();
}));
for (Integer integer : map.keySet()) {
System.out.println(map.get(integer));
}
}
6、List转化Map(方式二)
@Test
public void myTest6(){
List<Account> strings = new ArrayList<>();
strings.add(new Account(1,"a"));
strings.add(new Account(2,"b"));
strings.add(new Account(3,"c"));
strings.add(new Account(4,"d"));
Map<Integer, Account> map = strings.stream().collect(Collectors.toMap(Account::getId, Function.identity()));
for (Integer integer : map.keySet()) {
System.out.println(map.get(integer));
}
}
7、将List转成Map(按某个字段分组)
@Test
public void myTest7(){
List<Account> strings = new ArrayList<>();
strings.add(new Account(1,"a"));
strings.add(new Account(2,"b"));
strings.add(new Account(3,"c"));
strings.add(new Account(4, "a"));
Map<Integer, List<Account>> map = strings.stream().collect(Collectors.groupingBy(Account::getId));
for (Integer integer : map.keySet()) {
System.out.println(map.get(integer));
}
}