114-2 OOP B組 實習課練習 Week13

Week13 實習課 練習


Problems

Problem Points AC Rate Users
Fruit Inventory Analysis 10p 47.0% 36
Remove Sets From ArrayList 10p 47.1% 60
Zoo Manage 60p 57.5% 59

Comments


  • 0
    scu14156238  commented on May 28, 2026, 10:26 a.m.

    import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner;

    public class MyProgram {
    public static void main(String[] args) {
    ArrayList<HashSet<String>> list = new ArrayList<>();
    // 讀取輸入資料,以逗號分割,並存入 HashSet Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < 5; i++) {
    HashSet<String> set = new HashSet<>();
    for (String value : scanner.nextLine().split(",")) {
    set.add(value);
    }
    list.add(set);
    }
    // 讀取要移除的水果名稱 String valueToRemove = scanner.nextLine();

        // 呼叫移除函數
        removeSetsContainingValue(list, valueToRemove);        
    
        // 顯示 list 的第一個和最後一個元素。
        if (list.isEmpty() == false) {            
            ShowSortedSet(list.get(0));            
            ShowSortedSet(list.get(list.size() - 1));        
        }        
        else {            
            System.out.println("Empty");        
        }    
    }    
    
    /**
     * 核心實作:移除包含指定水果的 HashSet
     */
    public static void removeSetsContainingValue(ArrayList<HashSet<String>> list, String valueToRemove) {
        // 方法一:使用 Java 8 的 removeIf (最簡潔,推薦!)
        // 語意:如果這個 set 包含 (contains) 指定的水果,就把該 set 從 list 中移除
        list.removeIf(set -> set.contains(valueToRemove));
    
        /* // 方法二:如果你偏好傳統的 Iterator(迭代器)寫法,可以取消此段註解
        java.util.Iterator<HashSet<String>> iterator = list.iterator();
        while (iterator.hasNext()) {
            HashSet<String> set = iterator.next();
            // 檢查目前的 HashSet 是否包含該指定水果
            if (set.contains(valueToRemove)) {
                iterator.remove(); // 安全地從 ArrayList 中移除
            }
        }
        */
    }
    
    public static void ShowSortedSet(HashSet<String> set) {        
        ArrayList<String> sortedList = new ArrayList<>(set);        
        sortedList.sort(null);        
        System.out.println(String.join(",", sortedList));    
    }

    }