Как удалить указанную строку c в Arraylist - PullRequest
1 голос
/ 20 июня 2020

Как мне удалить указанную строку c из ArrayList, когда я пытался это сделать, но после этого она все еще отображается в ArrayList? Например, если я хочу удалить rollno: 2, BBB, 14. как мне удалить это из ArrayList, а не два других. Я попытался поместить itr.remove в while l oop, упомянутый ниже в комментариях, но все равно не повезло, он все еще отображается в списке массивов, и ничего не удаляется.

publi c class StudentDB {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //Creating user defined class objects  
        Student s1=new Student(1,"AAA",13);  
        Student s2=new Student(2,"BBB",14);  
        Student s3=new Student(3,"CCC",15); 

        ArrayList<Student> al=new ArrayList<Student>();
        al.add(s1);
        al.add(s2);  
        al.add(s3);  

        Iterator itr=al.iterator();  

        //traverse elements of ArrayList object  
       /* while(itr.hasNext()){  
            Student st=(Student)itr.next();  
            if(st.rollno == 2){
            System.out.println(st.rollno+" "+st.name+" "+st.age);  
            }
            else{
                continue;
            }
        }  */
        //Scanner scan = new Scanner(System.in);
        System.out.println("ENter your id: ");
        int id = scan.nextInt();


        boolean result = false;
        while(!result) {
            while(itr.hasNext()) {  
               Student st=(Student)itr.next();  
               if(st.rollno == id){
               result = true;
               break;
               }
               else{
                   result = false;
               } 
        }       

    }
    if(result == true){
      System.out.println("Roll no found!");
      }else{
      System.out.println("Roll no not found!");
      }
      }
}
class Student{  
    int rollno;  
    String name;  
    int age;  
    Student(int rollno,String name,int age){  
        this.rollno=rollno;  
        this.name=name;  
        this.age=age;  
    }  
}

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Попробуйте это.

System.out.println("Enter id to remove: ");
int id = scan.nextInt();

Iterator<Student> itr = al.iterator();
while (itr.hasNext()) {
    if (itr.next().rollno == id) {
        itr.remove();
    }
}
1 голос
/ 20 июня 2020

Вам не нужно использовать две петли. Вам нужно вызвать метод удаления на итераторе следующим образом:

            while(itr.hasNext()) {  
               Student st=(Student)itr.next();  
               if(st.rollno == id){
               itr.remove();
               result = true;
               break;
               }
               else{
                   result = false;
               }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...