从连接到密钥的HashSet中删除值?

时间:2018-03-29 07:28:07

标签: java collections maps hashset

我想从学校班级中撤出一名学生。以下方法是不是删除值?想法请:

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

}

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

//这是课程的一部分。

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); 
}

1 个答案:

答案 0 :(得分:0)

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

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

    }
}