Remove Clubs From Student List


Submit solution

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

Author:
Problem type

題目說明

請撰寫一個程式,先讀取五組字串,每個字串包含一到多個學生姓名,學生姓名之間以逗號分隔,學生姓名可能重複。
程式應該將每一組存入HashSet集合中,使得每一組都僅保留不重複的學生姓名。再將這些集合存入一個ArrayList陣列中。
程式再讀取第六個字串,表示一個指定的學生姓名,然後檢查陣列中的每個集合,若某個集合包含指定學生,則從陣列中移除該集合。
如果最後陣列不是空的,就輸出第一個集合和最後一個集合,輸出時會依照學生姓名排序(已實作在參考程式碼中的displaySortedMembers函數)。如果最後陣列是空的,就僅輸出Empty字樣。
可以利用以下的參考程式碼作為基礎,做小幅度的修改(可能在10行以內),讓它可以滿足以上需求。
若修改正確,當程式輸入以下範例輸入時,應該產生其對應輸出結果。

參考程式碼

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

public class ClubManager {
    public static void main(String[] args) {
        ArrayList<HashSet<String>> clubList = new ArrayList<>();

        // 讀取社團成員資料,用逗號分隔,存入HashSet
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 5; i++) {
            HashSet<String> members = new HashSet<>();
            for (String member : scanner.nextLine().split(",")) {
                members.add(member);
            }
            clubList.add(members);
        }

        // 讀取要退出的學生姓名
        String studentToRemove = scanner.nextLine();

        // 顯示剩餘社團清單的第一個和最後一個社團
        // HashSet以字串形式顯示,成員按字母順序排列
        if (clubList.isEmpty() == false) {
            displaySortedMembers(clubList.get(0));
            displaySortedMembers(clubList.get(clubList.size() - 1));
        }
        else {
            System.out.println("Empty");
        }
    }

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

輸入

先輸入五組字串,再輸入第六個字串(表示一個指定學生)

輸出

輸出陣列中不包含該指定學生姓名的「第一個集合和最後一個集合」。
如果最後陣列是空的,就僅輸出Empty字樣。

範例輸入#1

Tom,Jerry,Mike
Sam,Rita,Paul
Luke,Nina,Oscar
Ben,Quinn,Steve
Tom,Mark,Nancy
Tom

範例輸出#1

Paul,Rita,Sam
Ben,Quinn,Steve

範例輸入#2

Alice,Bob,Charlie
David,Alice,Frank
Grace,Alice,Henry
Alice,Jack,Kate
Alice,Lily,Mike
Alice

範例輸出#2

Empty

Comments

There are no comments at the moment.