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;
}
}
你可以做
student2.Group = "L1M2";
要么
arrayList.get(1).Group = "L1M2";
我会建议你一个全新的数据结构。也许是地图,如果这是某种东西,经常发生。
根据您当前的数据结构,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方法),但我不会去那些,因为它不是您的问题的一部分。
对于Java 8和+:
arrayList.stream().map(student -> {
if(student.getName.equals("Rahul")){
student.setGroup("L1M2");
}
return student;
}).collect(Collectors.toList());;