创建实体类
```java
package listDemo;
import lombok.Data;
@Data
public class Student {
/**
* id 主键
*/
private Integer Id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 年级
*/
private String grade;
/**
* 班级
*/
private String classNmae;
public Student(Integer id, String name, Integer age, String grade, String classNmae) {
Id = id;
this.name = name;
this.age = age;
this.grade = grade;
this.classNmae = classNmae;
}
}
创建模拟数据
package listDemo;
import java.util.ArrayList;
import java.util.List;
public class studentService {
public static List<Student> getStudentList(){
List<Student> studentList = new ArrayList<>();
studentList.add(new Student(1,"小明",16,"高一","3班"));
studentList.add(new Student(2,"小李",18,"高三","1班"));
studentList.add(new Student(3,"小王",16,"高一","2班"));
studentList.add(new Student(4,"小徐",17,"高二","4班"));
studentList.add(new Student(5,"小马",19,"高三","6班"));
return studentList;
}
}
创建main方法
package listDemo;
import java.util.List;
public class demo1 {
public static void main(String[] args) {
// 获取 List 数据
List<Student> studentList = studentService.getStudentList();
// 1.Java8 遍历List
studentList.forEach(System.out::println);
System.out.println("--------------------------------------------------------------");
//studentList.forEach(System.out ::println);等同于 studentList.forEach(student -> {System.out.println(student);});
System.out.println("--------------------------------------------------------------");
//2.常规遍历
for(int i=0;i<studentList.size();i++){
System.out.println("常规遍历"+studentList.get(i));
}
System.out.println("--------------------------------------------------------------");
for(Object s : studentList){
System.out.println("常规遍历第二种方式"+s);
}
System.out.println("--------------------------------------------------------------");
studentList.stream().forEach(student -> {
System.out.println("流遍历"+student);});
System.out.println("--------------------------------------------------------------");
studentList.stream().filter(s ->s.getGrade() != "高三").forEach(s2 ->{
System.out.println("过滤器遍历"+s2);
});
}
}
输出结果
Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
常规遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
常规遍历Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
常规遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
常规遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
常规遍历Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
常规遍历第二种方式Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
常规遍历第二种方式Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
常规遍历第二种方式Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
常规遍历第二种方式Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
常规遍历第二种方式Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
流遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
流遍历Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
流遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
流遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
流遍历Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
过滤器遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
过滤器遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
过滤器遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
Process finished with exit code 0
假设获得新的信息,存放在新的list里,想要修改student信息
创建模拟数据
package listDemo;
import java.util.ArrayList;
import java.util.List;
public class studentService {
public static List<Student> getStudentList(){
List<Student> studentList = new ArrayList<>();
studentList.add(new Student(1,"小明",16,"高一","3班"));
studentList.add(new Student(2,"小李",18,"高三","1班"));
studentList.add(new Student(3,"小王",16,"高一","2班"));
studentList.add(new Student(4,"小徐",17,"高二","4班"));
studentList.add(new Student(5,"小马",19,"高三","6班"));
return studentList;
}
public static List<Student> updateStudentList(){
List<Student> studentList = new ArrayList<>();
studentList.add(new Student(1,"xiaoming",null,null,null));
studentList.add(new Student(2,"xiaoli",null,null,null));
return studentList;
}
}
main方法
package listDemo;
import com.sun.xml.internal.bind.v2.model.core.ID;
import javax.naming.Name;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
public class demo1 {
public static void main(String[] args) {
// 获取 List 数据
List<Student> studentList = studentService.getStudentList();
// 1.Java8 遍历List
studentList.forEach(System.out::println);
System.out.println("--------------------------------------------------------------");
//studentList.forEach(System.out ::println);等同于 studentList.forEach(student -> {System.out.println(student);});
System.out.println("--------------------------------------------------------------");
//2.常规遍历
for(int i=0;i<studentList.size();i++){
System.out.println("常规遍历"+studentList.get(i));
}
System.out.println("--------------------------------------------------------------");
for(Object s : studentList){
System.out.println("常规遍历第二种方式"+s);
}
System.out.println("--------------------------------------------------------------");
studentList.stream().forEach(student -> {
System.out.println("流遍历"+student);});
System.out.println("--------------------------------------------------------------");
studentList.stream().filter(s ->s.getGrade() != "高三").forEach(s2 ->{
System.out.println("过滤器遍历"+s2);
});
System.out.println("--------------------------------------------------------------");
//修改student信息
List<Student> updateList = studentService.updateStudentList();
//第一种方式
int a = studentList.size();
int b = updateList.size();
for(int i =0;i<a;i++){
for (int n =0;n<b;n++){
if(studentList.get(i).getId().equals(updateList.get(n).getId())){
studentList.get(i).setName(updateList.get(i).getName());
}
}
}
for(int i=0;i<studentList.size();i++){
System.out.println("第一种方式修改后遍历"+studentList.get(i));
}
System.out.println("--------------------------------------------------------------");
//第二种方式
studentList.stream().forEach(s1 -> {
updateList.stream().filter(s2 -> s1.getId().equals(s2.getId())).forEach(
s3 ->{
s1.setName(s3.getName());
System.out.println("第二种方式修改后遍历"+s1);
});
});
}
}
结果
Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
常规遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
常规遍历Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
常规遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
常规遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
常规遍历Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
常规遍历第二种方式Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
常规遍历第二种方式Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
常规遍历第二种方式Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
常规遍历第二种方式Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
常规遍历第二种方式Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
流遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
流遍历Student(Id=2, name=小李, age=18, grade=高三, classNmae=1班)
流遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
流遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
流遍历Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
过滤器遍历Student(Id=1, name=小明, age=16, grade=高一, classNmae=3班)
过滤器遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
过滤器遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
第一种方式修改后遍历Student(Id=1, name=xiaoming, age=16, grade=高一, classNmae=3班)
第一种方式修改后遍历Student(Id=2, name=xiaoli, age=18, grade=高三, classNmae=1班)
第一种方式修改后遍历Student(Id=3, name=小王, age=16, grade=高一, classNmae=2班)
第一种方式修改后遍历Student(Id=4, name=小徐, age=17, grade=高二, classNmae=4班)
第一种方式修改后遍历Student(Id=5, name=小马, age=19, grade=高三, classNmae=6班)
第二种方式修改后遍历Student(Id=1, name=xiaoming, age=16, grade=高一, classNmae=3班)
第二种方式修改后遍历Student(Id=2, name=xiaoli, age=18, grade=高三, classNmae=1班)
Process finished with exit code 0

总结:项目中service查询数据库后返回的list里有多条数据,还是用第二种修改方式比较稳妥快捷,注意添加非空判断,否则会有空指针报错