2016-04-18 2 views
1

Мне нужно удалить элемент arraalist класса pojo, когда он равен строке arraylist.Удалить pojo arraylist item

Ниже я разместил код:

Sample.java:

import java.util.ArrayList; 

public class Sample { 

    public static void main(String args[]) { 

     ArrayList<String> arrStr; 

     ArrayList<Student> arrStudent; 

     arrStr = new ArrayList<String>(); 

     arrStudent = new ArrayList<Student>(); 


     arrStr.add("100"); 
     arrStr.add("150"); 
     arrStr.add("200"); 
     arrStr.add("250"); 
     arrStr.add("300"); 

     arrStudent.add(new Student("Max", "Get Data ", "140")); 
     arrStudent.add(new Student("Max", "Get Data ", "150")); 
     arrStudent.add(new Student("Max", "Get Data ", "160")); 
     arrStudent.add(new Student("Max", "Get Data ", "200")); 
     arrStudent.add(new Student("Max", "Get Data ", "230")); 


     for (String item : arrStr) { 

      System.out.println("item :" +item); 

      System.out.println("ArrListCheck" +arrStudent.toString()); 


      if (arrStudent.contains(item)) { 

       arrStudent.remove(item); 

      } else { 

       System.out.println("Else Called"); 


      } 
     } 

    } 

} 

Student.java:

public class Student { 

    public String name; 

    public String description; 

    public String id; 

    public Student(String name, String description, String id) { 
     this.name = name; 
     this.description = description; 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public String getId() { 
     return id; 
    } 

    @Override 
    public String toString() { 

     String str = name +""+description+""+id; 

     return str; 
    } 

} 

Выход:

item :100 
ArrListCheck[MaxGet Data 140, MaxGet Data 150, MaxGet Data 160, MaxGet Data 200, MaxGet Data 230] 
Else Called 

item :150 
ArrListCheck[MaxGet Data 140, MaxGet Data 150, MaxGet Data 160, MaxGet Data 200, MaxGet Data 230] 
Else Called 

item :200 
ArrListCheck[MaxGet Data 140, MaxGet Data 150, MaxGet Data 160, MaxGet Data 200, MaxGet Data 230] 
Else Called 

item :250 
ArrListCheck[MaxGet Data 140, MaxGet Data 150, MaxGet Data 160, MaxGet Data 200, MaxGet Data 230] 
Else Called 

item :300 
ArrListCheck[MaxGet Data 140, MaxGet Data 150, MaxGet Data 160, MaxGet Data 200, MaxGet Data 230] 
Else Called 

Как вы видите в приведенном выше коде, он всегда вызывает else.I не знаю, как сопоставить два идентификатора в строке arraylist с классом pojo класса arraylist, а затем я должен удалить элемент класса arjoarraist pojo на основе идентификатора Любой может мне помочь в этом.

+0

Угадайте, что 'Map ' будет более подходящим здесь. – SomeJavaGuy

ответ

1

Вы можете перебрать ArrayList<Student> вместо итерации над ArrayList<String>:

for (int i = 0; i < arrStudent.size(); i++) { 
     Student student = arrStudent.get(i); 
     if (arrStr.contains(student.getID())) { 
      arrStudent.remove(i); 
      i--; 
     } else { 
      System.out.println("Else Called"); 
     } 
    } 
0

вашего item является строкой, которая перебирает в valeus из arrStr. затем Вы пытаетесь сравнить строку объект Student здесь: if (arrStudent.contains(item))

так arrStudent содержит студент, он никогда не будет Retrun правды. Вы перейдете к предложению else ...

Смежные вопросы