如需转载分享,请标明出处,且不用于盈利为目的,谢谢合作!
lambda强大的功能(分页、过滤、排序、减少代码量等等)
情景1.获取某个集合(students)中对象(Student)的某个属性(id)值的集合
List<Student> students = 数据库查的数据;
List ids= students.stream().map(Student::getId).collect(Collectors.toList());
情景2.lambda分页
int pageIndex = queryShowNodeDataDto.getPageNum();//当前页 前端传
int pageSize = queryShowNodeDataDto.getPageSize();//每页显示条数 前端传
int total = (int)tableData.stream().filter(s->!s.isEmpty()).count();//总条数
List<Map<String, Object>> collect = tableData.stream().skip(pageSize * (pageIndex - 1)).limit(pageSize).collect(Collectors.toList());//数据
customPage.setDatalist(collect);//数据 传给前端
customPage.setTotal(total);//总条数 传给前端
customPage.setPageSize(pageSize);//每页显示条数 传给前端
customPage.setPageNum(pageIndex);//当前页 传给前端
情景3.lambda对集合排序
List<Student> students = 数据库查的数据;//需要排序的集合
List<Student> desc = students.stream().sorted(Comparator.comparing(Student::getCreatedTime).reversed()).collect(Collectors.toList());//降序排序
List<Student> asc = students.stream().sorted(Comparator.comparing(Student::getCreatedTime)).collect(Collectors.toList());//降序排序
情景4.对集合模糊查询
List<Student> students = 数据库查的数据;//需要模糊查询的集合
List<Student> select = students.stream().filter(item->item.getName().contains(StringUtils.isNotBlank(name)? name:"")).collect(Collectors.toList());//根据名字模糊查询
情景5.对集合排序并模糊查询
List<Student> students = 数据库查的数据;//需要排序并模糊查询的集合
List<Student> desc = students.stream().filter(item->item.getName().contains(StringUtils.isNotBlank(name)? name:"") ).sorted(Comparator.comparing(Student::getCreatedTime).reversed()).collect(Collectors.toList());
情景6.数组字母小写变大写
List list= Arrays.asList(“a”, “b”, “c”, “d”);
List collect =list.stream().map(String::toUpperCase).collect(Collectors.toList());
情景7.数组所有元素,按某种规律计算
List num = Arrays.asList(1,2,3,4,5);
List collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
情景8.以某个属性来分组,例如,以id分组,将id相同的放在一起
public class Test {
@Data
@AllArgsConstructor
static class Fruits{
private String id;//id
private String name;//名字
}
public static void main(String[] args){
List<Fruits> fruits = new ArrayList<>();
fruits.add(new Fruits("1","one apple"));
fruits.add(new Fruits("1","two apple"));
fruits.add(new Fruits("2","one banana"));
fruits.add(new Fruits("2","two banana"));
//分组
//以某个属性来分组,例如,以id分组,将id相同的放在一起
Map<String,List<Fruits>> groupById = fruits.stream().collect(Collectors.groupingBy(Fruits::getId));
System.out.println(groupById);
}
}
情景9.List<Map<String,Object>>获取map中某个key的值集合
List<Map<String,Object>> maps = new ArrayList<>();
List<String> ids = maps.stream().map(map -> (String) map.get("id")).collect(Collectors.toList());