Solution: The Expired Product Purge
Understand how to use Java Collections and Iterators to implement a solution that removes expired or out-of-stock product entries. This lesson guides you through parsing file data, iterating with an Iterator, and applying business rules to safely modify a list during iteration.
We'll cover the following...
We'll cover the following...
Java 25
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class WarehouseManager {static class Product {String name;int stock;String status;public Product(String name, int stock, String status) {this.name = name;this.stock = stock;this.status = status;}@Overridepublic String toString() {return name + " (Stock: " + stock + ", Status: " + status + ")";}}public static List<Product> loadProducts(String filePath) {List<Product> products = new ArrayList<>();try {List<String> lines = Files.readAllLines(Path.of(filePath));// Start loop at 1 to skip the CSV header rowfor (int i = 1; i < lines.size(); i++) {String line = lines.get(i);String[] parts = line.split(",");// Parse CSV columnsString name = parts[0].trim();int stock = Integer.parseInt(parts[1].trim());String status = parts[2].trim();products.add(new Product(name, stock, status));}} catch (IOException e) {System.out.println("Error reading file: " + e.getMessage());}return products;}public static void removeUnsellableItems(List<Product> inventory) {Iterator<Product> it = inventory.iterator();while (it.hasNext()) {Product p = it.next();// Remove if Stock is 0 OR Status is Expiredif (p.stock == 0 || p.status.equals("Expired")) {it.remove();}}}public static void main(String[] args) {System.out.println("--- Loading Inventory ---");List<Product> inventory = loadProducts(filePath);System.out.println("Loaded " + inventory.size() + " items.");// Print first 5 to verify loadingif (!inventory.isEmpty()) {System.out.println("First 5 items: " + inventory.subList(0, Math.min(inventory.size(), 5)));}System.out.println("\n--- Purging Unsellable Items ---");removeUnsellableItems(inventory);System.out.println("Purge complete.");System.out.println("Remaining items: " + inventory.size());System.out.println("Active Inventory:");for (Product p : inventory) {System.out.println(" - " + p);}}}
...