如何将rahul组从L1M1更改为L1M2

问题描述 投票:0回答:3
import java.util.;

public class Student {

    String Name;
    String Group;
    String Phonenumber;

    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        Student student = new Student("Ayush", "L1N1", "9876543210");
        arrayList.add(student);
        Student student2 = new Student("Rahul", "L1M1", "9876543211");
        Student student3 = new Student("Gaurav", "L1N2", "9876543212");
        arrayList.add(student2);
        arrayList.add(student3);
        System.out.println("Name" + "Group" + "Phonenumber");
        for (Student all : arrayList) {
            System.out.println(all.Name + " " + all.Group + " " + all.Phonenumber);
        }
    }

    public Student(String Name, String Group, String Phonenumber) {
        this.Name = Name;
        this.Group = Group;
        this.Phonenumber = Phonenumber;
    }
}
java
3个回答
0
投票

你可以做

student2.Group = "L1M2";

要么

arrayList.get(1).Group = "L1M2";

0
投票

我会建议你一个全新的数据结构。也许是地图,如果这是某种东西,经常发生。

根据您当前的数据结构,Tpo 6指出,您可以简单地得到(1)并返回想要的学生。

但为了正常工作,你必须引入一个泛型,因为其他方面,你处理对象,并且必须将对象强制转换为学生。

ArrayList<Student> arrayList = new ArrayList<>();

关于generics的信息可以在here找到

为了更清洁的代码,我会进一步建议将ArrayList<Student>更改为接口List<Student>

但是,如果您不知道它们出现的顺序,您可以迭代List并比较这样的名称:

List<Student> list = new ArrayList<>();
for(Student student : list) {
    if(student.Name.equals("Rahul")) {
        student.Group = "L1M2";
    }
}

在Java 8中,您还可以选择使用Streams,这是一个很好的补充。使用Stream,此行看起来像这样:

list.stream()
    .filter(student -> student.Name.equals("Rahul"))
    .forEach(student -> student.Group = "L1M2");

这会改变你名单中所有Rahuls的集团。

请注意,您的代码是潜在的其他问题,如并发问题(因为您使用属性而不是getter / setter方法),但我不会去那些,因为它不是您的问题的一部分。


0
投票

对于Java 8和+:

 arrayList.stream().map(student -> {
      if(student.getName.equals("Rahul")){
         student.setGroup("L1M2");
        }
    return student;
    }).collect(Collectors.toList());;
© www.soinside.com 2019 - 2024. All rights reserved.