Remove Sets From ArrayList


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 256M

Authors:
Problem type
Allowed languages
Java 19, Java 8

題目說明

請撰寫一個程式,先讀取五組字串,每個字串包含一到多個水果,水果之間以逗號分隔,水果可能重複。

程式應該將每一組存入HashSet集合中,使得每一組都僅保留不重複的水果。再將這些集合存入一個ArrayList陣列中。

程式另外讀取第六個字串,表示一個指定的水果,然後檢查陣列中的每個集合,若某個集合包含指定水果,則從陣列中移除該集合。

如果最後陣列不是空的,就輸出第一個集合和最後一個集合,輸出時會依照水果名稱排序(已實作在參考程式碼中的ShowSortedSet函數)。如果最後陣列是空的,就僅輸出Empty字樣。

可以利用以下的參考程式碼作為基礎,做小幅度的修改(可能在10行以內),讓它可以滿足以上需求。若修改正確,當程式獲得以下每一組範例輸入時,應該產生該範例的對應輸出結果。


範例輸入#1

apple,banana,orange,pear
kiwi,grape,apple,kiwi
melon,peach,kiwi
banana,kiwi,apple,orange
grape,lemon,apple,banana,lemon
orange

範例輸出#1

apple,grape,kiwi
apple,banana,grape,lemon

範例輸入#2

mango,apple,blueberry
strawberry,orange,kiwi,grape
lemon,watermelon,apple
banana,pineapple,banana
peach,apple,blueberry,grape,orange
blueberry

範例輸出#2

grape,kiwi,orange,strawberry
banana,pineapple

範例輸入#3

mango,apple,blueberry
strawberry,orange,kiwi,grape,blueberry
lemon,watermelon,apple,blueberry,blueberry
banana,pineapple,banana,blueberry
peach,apple,blueberry,grape,orange
blueberry

範例輸出#3

Empty
參考程式碼
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<>();

        // Read input data, split by comma, and store in 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);
        }

        // Read the value to remove
        String valueToRemove = scanner.nextLine();

        // Remove HashSet objects containing the specified value
        removeSetsContainingValue(list, valueToRemove);

        // Show the first and last elements of the list.
        // The HashSet is shown as string, where the elements are sorted alphabetically.
        if (list.isEmpty() == false) {
            ShowSortedSet(list.get(0));
            ShowSortedSet(list.get(list.size() - 1));
        }
        else {
            System.out.println("Empty");
        }
    }

    public static void ShowSortedSet(HashSet<String> set) {
        ArrayList<String> sortedList = new ArrayList<>(set);
        sortedList.sort(null);
        System.out.println(String.join(",", sortedList));
    }
}

Comments

There are no comments at the moment.