我们经常遇到需要对查出来的List集合进行筛选,条件判断,分组等,虽然可以在mapper层控制,但是难免在业务中不能去改dao层,需要自己手动控制
pojo类
Person.java
@Data
public class Person{
// id
private int idNum;
// 名字
private String name;
// 地址
private String address;
// 年龄
private int age;
// 身高
private String height;
// 体重
private String weight;
}
PersonInfo.java
@Data
@Accessors(chain = true) //开启 链式注入
public class PersonInfo {
// id
int idNum;
// 名字
String name;
// 地址
String address;
}
测试类Test
/**
* Java集合流的一些基本使用(持续完善中...)
*/
public class JustTest {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
Person person ;
//造数据 begin
for (int i = 0; i < 100; i++) {
person = new Person();
person.setIdNum(i);
person.setName("张三"+i);
person.setAge(10+i%4);
person.setAddress("上海市青浦区");
person.setHeight("180cm");
person.setWeight("50kg");
personList.add(person);
}
for (int i = 0; i < 100; i++) {
person = new Person();
person.setIdNum(i);
person.setName("张三"+i);
person.setAge(20+i%3);
person.setAddress("上海市青浦区");
person.setHeight("180cm");
person.setWeight("50kg");
personList.add(person);
}
for (int i = 0; i < 100; i++) {
person = new Person();
person.setIdNum(i);
person.setName("张三"+i);
person.setAge(30+i%3);
person.setAddress("上海市青浦区");
person.setHeight("180cm");
person.setWeight("50kg");
personList.add(person);
}
for (int i = 0; i < 100; i++) {
person = new Person();
person.setIdNum(i);
person.setName("张三"+i);
person.setAge(40+i%4);
person.setAddress("上海市青浦区");
person.setHeight("180cm");
person.setWeight("50kg");
personList.add(person);
}
//造数据 end
//1.返回key value集合,value是对应key条件的分组;根据pojo的某个字段分组
Map<Integer, List<Person>> collect = personList.parallelStream().collect(Collectors.groupingBy(Person::getAge, Collectors.toList()));
//2.筛选出含有person.age==43,并返回封装成List集合;
List<Person> peopleList = personList.parallelStream().filter(e -> e.getAge == 43).collect(Collectors.toList());
//3使用map,将Person的的部分数据转存到PersonInfo对象,再封装返回List<PersonInfo>;
List<PersonInfo> list = personList.parallelStream().map(e -> new PersonInfo().setIdNum(e.getIdNum()).setName(e.getName()).setAddress(e.getAddress())).collect(Collectors.toList());
}
}
网友评论