1.废话不多说直接上代码。
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Student {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id.equals(student.id) && name.equals(student.name) && age.equals(student.age);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age);
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
public Student(Long id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
private Long id;
private String name;
public Student(Long id, String name, String age, Integer score) {
this.id = id;
this.name = name;
this.age = age;
this.score = score;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
private String age;
private Integer score;
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student(1L,"赵四","男",1));
students.add(new Student(2L,"王五","男"));
students.add(new Student(3L,"赵六","女"));
students.add(new Student(4L,null,"女"));
System.out.println(students);
//[Student{id=1, name='赵四', age='男'}, Student{id=2, name='王五', age='男'}, Student{id=3, name='赵六', age='女'}]
//根据id 转为map 数据
Map<Long, Student> collect = students.stream().collect(Collectors.toMap(Student::getId, Function.identity()));
System.out.println(collect);
//{1=Student{id=1, name='赵四', age='男'}, 2=Student{id=2, name='王五', age='男'}, 3=Student{id=3, name='赵六', age='女'}}
//根据id分组 获取 学生集合对象
Map<Long, List<Student>> longListMap = students.stream().collect(Collectors.groupingBy(Student::getId));
System.out.println(longListMap);
//{1=[Student{id=1, name='赵四', age='男'}], 2=[Student{id=2, name='王五', age='男'}], 3=[Student{id=3, name='赵六', age='女'}]}
//获取id 集合
List<Long> longs = students.stream().map(Student::getId).collect(Collectors.toList());
System.out.println(longs);
//[1, 2, 3]
// 去除重复数据 注意 需要去重的对象 需要重写 equals and hashCode 方法
students.add(new Student(3L,"赵六","女"));
List<Student> studentList = students.stream().distinct().collect(Collectors.toList());
System.out.println(studentList);
//[Student{id=1, name='赵四', age='男'}, Student{id=2, name='王五', age='男'}, Student{id=3, name='赵六', age='女'}, Student{id=4, name='null', age='女'}]
//集合总数据
long count = students.size();
System.out.println(count);//5
//对成绩进行求和 过滤掉为空的数据
int sum = students.stream().filter(student -> student.getScore() != null).mapToInt(Student::getScore).sum();
System.out.println(sum); // 1
}
}
2.后续在开发中碰到的其他方法会持续更新哈,感谢大家支持。