创建一个映射枚举的Map

时间:2020-04-11 07:44:26

标签: java collections enums maps java-stream

需要您的帮助。我今天进行了一次编程采访,并提出了这个问题。

请完成以下代码片段,以创建一个映射枚举以编辑特权的映射

Map<String, Boolean> userTypeToEditPermission () {
return Stream.____(UserType.____).____(____(Enum::name,UserType::hasEsitPermission));

enum UserType {
      ADMIN(true), MODERATOR(true), DEVELOPER(false);
}

private final boolean editPermission;

UserType(boolean editPermission) {
     this.editPermission=editPermission
}

public boolean hasEditPermission() {
return hasEditPermission;
}

1 个答案:

答案 0 :(得分:0)

您的代码段中存在一些语法错误,枚举应该看起来像这样:

enum UserType {
    ADMIN(true), MODERATOR(true), DEVELOPER(false);

    private final boolean editPermission;

    UserType(final boolean editPermission) {
        this.editPermission = editPermission;
    }

    public boolean hasEditPermission() {
        return editPermission;
    }
}

关于userTypeToEditPermission()方法,我假设他们想要从UserType名称(Enum::name)到editPermissionUserType::hasEditPermission)的映射,您可以按照以下步骤创建

return Stream.of(UserType.values()).collect(Collectors.toMap(Enum::name, UserType::hasEditPermission));

这将在所有UserType值上创建一个流,然后创建上述映射:

{DEVELOPER=false, ADMIN=true, MODERATOR=true}