Как изменить группу рахул с L1M1 на L1M2
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;
}
}
3 ответа
Для Java 8 и +:
arrayList.stream().map(student -> {
if(student.getName.equals("Rahul")){
student.setGroup("L1M2");
}
return student;
}).collect(Collectors.toList());;
Я бы порекомендовал вам совершенно новую структуру данных. Может быть, Карта, если это что-то, это происходит очень часто.
С вашей текущей структурой данных, как указал TpoM6oH, вы можете просто получить (1), и он вернет искомого студента.
Но для того, чтобы это работало правильно, вам нужно было бы ввести общее, так как в противном случае вы имеете дело с Объектами и должны были бы привести Объект к Студенту.
ArrayList<Student> arrayList = new ArrayList<>();
Более подробную информацию о дженериках можно найти здесь.
Для более чистого кода я бы порекомендовал изменить ArrayList<Student>
к интерфейсу List<Student>
Однако, если вы не знаете, в каком порядке они отображаются, вы можете перебрать список и сравнить имена следующим образом:
List<Student> list = new ArrayList<>();
for(Student student : list) {
if(student.Name.equals("Rahul")) {
student.Group = "L1M2";
}
}
В Java 8 у вас также есть возможность использовать потоки, которые являются хорошим дополнением. С потоком эта строка будет выглядеть так:
list.stream()
.filter(student -> student.Name.equals("Rahul"))
.forEach(student -> student.Group = "L1M2");
который изменит группу всех рахулов в вашем списке.
Обратите внимание, что в вашем коде есть и другие потенциальные проблемы, такие как проблемы параллелизма (потому что вы используете атрибуты вместо методов получения / установки), но я не буду на них останавливаться, поскольку это не было частью вашего вопроса.
Ты можешь сделать
student2.Group = "L1M2";
или же
arrayList.get(1).Group = "L1M2";