Как изменить группу рахул с 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";
Другие вопросы по тегам