Создать карту, которая отображает enum - PullRequest
1 голос
/ 11 апреля 2020

нужна ваша помощь. Сегодня у меня было интервью по кодированию, и у меня был этот вопрос.

Пожалуйста, заполните следующий фрагмент, чтобы создать карту, которая отображает перечисление для привилегии редактирования

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 голосов
/ 11 апреля 2020

В вашем фрагменте есть некоторые синтаксические ошибки, перечисление должно выглядеть примерно так:

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) до editPermission (UserType::hasEditPermission), которое можно создать следующим образом:

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

Это создает поток для всех значений UserType, а затем создает вышеупомянутое сопоставление:

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