目录
使用lambda表达式的时候,偶尔会记不清语法,特记录一下
前置内容:案例相关的类
User类
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
}
TestClass类
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class TestClass {
public static void main(String[] args) {
User user3 = new User("张三",30);
User user4 = new User("李四",40);
User user5 = new User("王五",50);
User user6 = new User("张六",60);
User user7 = new User("赵七",60);
List<User> userList = new ArrayList<>();
userList.add(user4);
userList.add(user3);
userList.add(user5);
userList.add(user6);
userList.add(user7);
}
}
1.转list
//beanList转换成某个变量的list
List<String> nameList = userList.stream().map(User::getName).collect(Collectors.toList());
//带过滤条件的转换,只转包含"张"的
List<String> zhangList = userList.stream().filter(t ->t.getName().contains("张")).map(User::getName).collect(Collectors.toList());
2.转map
//转成两个变量的map
Map<String, Integer> nameAgeMap = userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
//转成变量和bean的map
Map<String, User> nameUserMap = userList.stream().collect(Collectors.toMap(s -> s.getName(), Function.identity()));
//根据某个变量分组
Map<Integer, List<User>> ageListMap = userList.stream().collect(Collectors.groupingBy(User::getAge));
3.排序
注意排序是对原集合排序,不是生成新的
//根据某个变量正序
userList.sort(Comparator.comparing(User::getAge));
//根据某个变量倒序
userList.sort(Comparator.comparing(User::getAge).reversed());
//根据多个字段排序
userList.sort(Comparator.comparing(User::getAge).thenComparing(User::getName).reversed());
4.转set
Set<String> nameSet = userList.stream().map(User::getName).collect(Collectors.toSet());