簡體   English   中英

如何從 arraylist 中搜索和刪除 object?

[英]How to search and remove an object from an arraylist?

這是我之前帖子的后續問題:

如何分隔二維數組中的不同值

我現在需要根據條件(例如姓名和年齡)從數組中刪除特定的 object,然后將結果保存到文件中。 我已經閱讀了一些使用迭代器的示例,但沒有很好地遵循。

txt文件中的原始數據:

G Steve 23 Biology 
U Julia 19 Music Flute Sophomore 
G David 25 Math

以下是我在從 txt 文件讀取數據時創建 arraylist 的方法

ArrayList<Student> studentList = new ArrayList<>();
Student s = new Undergraduate(type,name,age,major,year);
studentList.add(s);
Student s = new Graduate(type,name,age, major);
studentList.add(s);

for (Student d:studentList) {
    System.out.println(d.toString());
}

提前致謝!

如果您使用的是 Java 8,您可以利用 Streaming。 例如,您的代碼可能如下所示:

List<Student> myFilteredList = studentList.stream()
  .filter(student -> !student.getName().equals("Julia"))
  .filter(student -> student.getAge() > 23)
  .collect(Collectors.toList())

如果您不習慣 lambda 表達式,我認為查看該主題將是一個好主意。

要從列表中刪除 object,您可以使用帶有條件的removeIf ,下面的示例刪除任何年齡超過 22 歲的“G”類型的學生

studentList.removeIf(s -> s.age > 22 && s.type.equals("G"));

我嘗試了幾種方法終於得到了這個:

                                System.out.println("Enter Student name: ");
                                System.out.println("Enter StudentID: ");
                                String dname = sc.next();
                                int dage = sc.nextInt();



                                for (Student s:studentList){
                                    if (s.getName().equals(dname)&&s.getAge()>dage) {
                                        System.out.println();
                                        studentList.remove(s);
                                        System.out.println("You removed: "+s.getName());
                                        System.out.println();
                                        break;
                                    } else {
                                        System.out.println();
                                        System.out.println("This Student doesn't exist");
                                        System.out.println();
                                        break;
                                    }
                                }

它運行但總是說“學生不存在”。 是不是“getName”不起作用(我假設它從 Student class 的構造函數中調用“name”字符串?)有人可以幫忙嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM