如何使用用户输入删除ArrayList中的特定行

时间:2017-09-13 13:53:05

标签: java arraylist

当用户输入图书ID编号时,我正试图找出如何删除 Arraylist 中的特定行。但是,它似乎无法在 Arraylist 中的任何位置找到该ID号。

compile 'com.github.bumptech.glide:glide:4.0.0'
private void removeBook() 
    // Removes a certain book from the Book List.
    {
        Scanner IDS = setbookID();
        int idNum = IDS.nextInt();
        if(bookList.contains(idNum)){ //problem
            bookList.remove("B"+Integer.valueOf(idNum));
        }
    }

bookList是一个ArrayList,它读取文本文件并以String形式出现。我的文本文件中的一行如下所示:

private Scanner setbookID(){
    Scanner bookID = new Scanner(System.in);
    System.out.println("Enter your book's ID number. ");
    return bookID;}

但是,如果用户键入“998”,则不会从ArrayList中删除此行。关于如何做到这一点的任何想法?迭代器会有所帮助吗?

编辑:这就是我首先将书籍添加到ArrayList的方式。

B998 ; Aithiopika ; Heliodorus ; 1829
private ArrayList<Book> readBooks(String filename) {
        ArrayList<Book> lines = new ArrayList<>();
        readTextFileB(filename, lines);
        return lines; 
    }

1 个答案:

答案 0 :(得分:0)

您的代码存在多个问题。无论您是要从列表中删除Book对象,都不清楚您要实现的目标。如果是这样,那么你需要比较book对象的ID字段(使用迭代器),假设你的Book类如下所示:

    class Book {
    int id;

    Book(int id) {
        this.id = id;
    }
}

如果以上情况不是方案,那么您的列表是Book对象的列表,那么如何在删除方法bookList.remove("B"+Integer.valueOf(idNum));上传递String作为参数 你应该在这里传递Book对象或索引号。