从连接到键的 HashSet 中删除值?

Removing Values from a HashSet that are connected to a key?

我想从学校退学class。下面的方法是不是去掉了值?想法请:

public static void withdrawStudent(String student) {
    enrollments.values().remove(student);

}

public static void main(String[] args) {
        enroll("101", "Pat");
        withdrawStudent("Pat");
}

//这里是class的一部分。

private static HashMap<String, Set<String>> enrollments = new HashMap<String, Set<String>>();

public static void enroll(String unit, String student) { 
    Set<String> studentsSet = enrollments.get(unit); 
    if(studentsSet == null) { 
        studentsSet = new HashSet<>(); 
    } 
    studentsSet.add(student);
    enrollments.put(unit, studentsSet); 
}

您的问题是您试图删除一个字符串,而 enrollments.values() returns 一组字符串。可能的解决方法是这样,但请记住,这会将学生从每次注册中删除。

public static void withdrawStudent(String student) {
    for (Set<String> studentSet : enrollments.values()) {
        studentSet.remove(student);

    }
}