个人笔记-List遍历一(遍历及修改)

创建实体类


```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

![demo](https://img-blog.csdnimg.cn/5bf4e250083a44209e79d089d516ad7c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L-b6Zi255qE57KJ5bCY,size_20,color_FFFFFF,t_70,g_se,x_16)
总结:项目中service查询数据库后返回的list里有多条数据,还是用第二种修改方式比较稳妥快捷,注意添加非空判断,否则会有空指针报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值