ArrayList / List 的remove无效问题

在使用ArrayList进行删除操作时,遇到数据无法删除的问题。关键在于遍历集合时,删除元素后要修正下标,避免漏掉后续元素。Java中删除方法有两种,一是根据下标remove(int index),二是根据对象remove(Object o)。后者要求传入对象的内存地址与集合中的对象相同,否则删除无效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个关于ArrayList的删除操作,操作后,失败,数据未删除,特此记录。

List<List<String>> group = new ArrayList<>();
List<Integer>
//import java.io.*; //import java.time.LocalDate; //import java.util.*; // //// 书籍管理类,负责书籍的增删改查等操作 //public class BookManager { // private List<Book> books; // 书籍列表 // private static final String FILE_PATH = "books.txt"; // 书籍数据存储文件 // // // 构造函数 // public BookManager() { // this.books = new ArrayList<>(); // } // // // 从文件加载书籍数据 // public void loadBooks() { // try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) { // String line; // while ((line = reader.readLine()) != null) { // String[] parts = line.split(","); // if (parts.length == 6) { // String bookId = parts[0]; // String isbn = parts[1]; // String title = parts[2]; // String category = parts[3]; // double price = Double.parseDouble(parts[4]); // LocalDate purchaseDate = LocalDate.parse(parts[5]); // // books.add(new Book(bookId, isbn, title, category, price, purchaseDate)); // } // } // } catch (IOException e) { // // 文件存在或读取错误,创建空文件 // try { // new File(FILE_PATH).createNewFile(); // } catch (IOException ex) { // System.out.println("创建书籍文件失败: " + ex.getMessage()); // } // } // } // // // 保存书籍数据到文件 // private void saveBooks() { // try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_PATH))) { // for (Book book : books) { // writer.write(book.getBookId() + "," + // book.getIsbn() + "," + // book.getTitle() + "," + // book.getCategory() + "," + // book.getPrice() + "," + // book.getPurchaseDate()); // writer.newLine(); // } // } catch (IOException e) { // System.out.println("保存书籍数据失败: " + e.getMessage()); // } // } // // // 显示所有书籍 // public void displayAllBooks() { // if (books.isEmpty()) { // System.out.println("没有书籍记录!"); //// return; // } // // System.out.println("\n===== 书籍列表 ====="); // for (Book book : books) { // System.out.println(book); // } // } // // // 查询书籍 // public void searchBooks(int searchType, String condition) { // List<Book> result = new ArrayList<>(); // // switch (searchType) { // case 1: // 按书籍编号查询 // for (Book book : books) { // if (book.getBookId().equals(condition)) { // result.add(book); // break; // 编号唯一,找到即退出 // } // } // break; // case 2: // 按ISBN号查询 // for (Book book : books) { // if (book.getIsbn().equals(condition)) { // result.add(book); // } // } // break; // case 3: // 按书籍名称查询 // for (Book book : books) { // if (book.getTitle().contains(condition)) { // result.add(book); // } // } // break; // case 4: // 按书籍分类查询 // for (Book book : books) { // if (book.getCategory().equals(condition)) { // result.add(book); // } // } // break; // default: // System.out.println("无效的查询类型!"); // return; // } // // if (result.isEmpty()) { // System.out.println("未找到匹配的书籍!"); // } else { // System.out.println("\n===== 查询结果 ====="); // for (Book book : result) { // System.out.println(book); // } // } // } // // // 添加书籍 // public void addBook(String isbn, String title, String category, double price, LocalDate purchaseDate) { // // 生成唯一的书籍编号 // String bookId = generateUniqueBookId(); // // Book newBook = new Book(bookId, isbn, title, category, price, purchaseDate); // books.add(newBook); // saveBooks(); // // System.out.println("书籍添加成功,书籍编号: " + bookId); // } // // // 修改书籍 // public void modifyBook(String bookId, String isbn, String title, String category, double price, LocalDate purchaseDate) { // Book bookToModify = null; // // for (Book book : books) { // if (book.getBookId().equals(bookId)) { // bookToModify = book; // break; // } // } // // if (bookToModify == null) { // System.out.println("未找到该书籍!"); // return; // } // // // 修改书籍信息 // bookToModify.setIsbn(isbn); // bookToModify.setTitle(title); // bookToModify.setCategory(category); // bookToModify.setPrice(price); // bookToModify.setPurchaseDate(purchaseDate); // // saveBooks(); // System.out.println("书籍信息修改成功!"); // } // // // 删除书籍 // public void deleteBook(String bookId) { // Iterator<Book> iterator = books.iterator(); // boolean found = false; // // while (iterator.hasNext()) { // Book book = iterator.next(); // if (book.getBookId().equals(bookId)) { // iterator.remove(); // found = true; // break; // } // } // // if (found) { // saveBooks(); // System.out.println("书籍删除成功!"); // } else { // System.out.println("未找到该书籍!"); // } // } // // // 生成唯一的书籍编号 // private String generateUniqueBookId() { // // 简单实现:使用当前时间戳和随机数生成唯一ID // return "B" + System.currentTimeMillis() + (int)(Math.random() * 1000); // } // // // 根据书籍编号获取书籍 // public Book getBookById(String bookId) { // for (Book book : books) { // if (book.getBookId().equals(bookId)) { // return book; // } // } // return null; // } // // // 获取所有书籍 // public List<Book> getAllBooks() { // return books; // } // // // 根据ISBN获取所有书籍 // public List<Book> getBooksByISBN(String isbn) { // List<Book> result = new ArrayList<>(); // for (Book book : books) { // if (book.getIsbn().equals(isbn)) { // result.add(book); // } // } // return result; // } // // // 根据分类获取所有书籍 // public List<Book> getBooksByCategory(String category) { // List<Book> result = new ArrayList<>(); // for (Book book : books) { // if (book.getCategory().equals(category)) { // result.add(book); // } // } // return result; // } //}逐行代码分析解释,做详细介绍,每个代码解释清楚
最新发布
07-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值