Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
1

Разделение строки на подстроки и добавление в коллекцию Set c типом Enum

23.12.2018, 15:21. Просмотров 480. Ответов 3
Метки нет (Все метки)


Есть перечисление, где указаны роли безопасности.

Java
1
2
3
4
public enum Authority {
 
    ADMIN, Manager, USER
}
Когда разбирается строка из таблицы, то в одном из полей находятся типы ролей безопасности. У каждого пользователя из несколько:

Стоит задача разобрать запись у конкретного пользователя и преобразовать список , назначенных ему ролей безопасностей
в коллекцию Set с определенным типом данных.

Вот рабочее решение.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 /*выдача маркера безопасности */
    private AuthenticationToken issueToken (Employee account){
 
        AuthenticationTokenService authenticationTokenService = new AuthenticationTokenService();
        Set<Authority> authorities = new LinkedHashSet<>();
 
        String[] subStr;
        String delimeter = ","; // Разделитель
        subStr = account.getRole().split(delimeter); // Разделения строки str с помощью метода split()
 
        for(int i = 0; i < subStr.length; i++) {
            System.out.println(subStr[i]);
            Authority[] values = Authority.values();
 
            for (int j = 0; j < values.length; j++){
                values[j].toString().equalsIgnoreCase(subStr[i].trim()) ;
                authorities.add(values[i]);
            }
        }
 
 String token = authenticationTokenService.issueToken(account.getEmail(), authorities);
 
        return ....;
    }

Есть ли решение еще проще или быстрее, или это самое простое.

Добавлено через 6 минут
Поле role у пользователя выглядит так:

Java
1
String role = "user, manager";
В строке их может быть несколько или одна.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2018, 15:21
Ответы с готовыми решениями:

Разделение строки на подстроки
заклин... :wall: Имеется текстовый файл out.txt в котором одной строкой прописано &quot;5x86&quot; &quot;6x64&quot;...

Разделение строки на подстроки
Здравствуйте, передаю строку от клиента к серверу Она имеет такую структуру: Id?имя...

Разделение строки на подстроки
Ребят, прошу отнеситесь серьезно помогите мне! Я делаю рейтинг в string otvet = w.text; ...

Разделение строки на подстроки
Есть строка, состоящая с трёх частей. Вот, как она выглядит: Переменная = значение ; коментарий к...

3
2965 / 2507 / 778
Регистрация: 05.07.2013
Сообщений: 12,155
23.12.2018, 15:59 2
Цитата Сообщение от masli Посмотреть сообщение
for(int i = 0; i < subStr.length; i++) {
* * * * * * System.out.println(subStr[i]);
* * * * * * Authority[] values = Authority.values();
for (int j = 0; j < values.length; j++){
* * * * * * * * values[j].toString().equalsIgnoreCase(subStr[i].trim()) ;
* * * * * * * * authorities.add(values[i]);
* * * * * * }
* * * * }
что тут ваще происходит Оо
0
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
23.12.2018, 20:38 3
Цитата Сообщение от masli Посмотреть сообщение
Есть ли решение еще проще или быстрее, или это самое простое.
Во-первых, у всех enum'ов есть статический метод valueOf. Во-вторых, существует EnumSet, который всем лучше всяких HashSet'ов при работе с enum'ами.
1
50 / 16 / 11
Регистрация: 27.03.2013
Сообщений: 788
24.12.2018, 13:21  [ТС] 4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static Set<Authority> getListRolesV2(Employee account){
 
         EnumSet<Authority> authorities = EnumSet.noneOf(Authority.class);
 
 
        String[] subStr;
        /*Разделитель*/
        String delimeter = ",";
 
        subStr = account.getRole().split(delimeter);
 
        Authority[] values = Authority.values();
 
        for(int i = 0; i < subStr.length; i++) {
 
            /* Разбираем Enum на подстроки, сравниваем
            * их с подстроками из проверяемой строки.
            * Если находим совпадение, тогда текущей значение
            * из Enum, помещаем в ранее созданную коллекцию*/
            for (Authority value : values) {
 
                if (value.toString().equalsIgnoreCase(subStr[i].trim())) {
                    authorities.add(values[i]);
                }
            }
        }
 
        return authorities;
    }
решено
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2018, 13:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Разделение строки на подстроки
Есть строка вида 'А=5,Б=3,В=1,Г=2,Д=0'. Надо разделить на подстроки, разделитель - запятая....

Разделение строки на подстроки по разделителю
В программе есть строка определенного вида. Подскажите какой функцией можно из строки получить...

Разделение строки на подстроки без разделителей...
Задача: Есть некая строка, состоящая из символов. Вопрос, как разделить строку по 66 символов в...

Неправильное разделение строки на подстроки(слова)
Здравствуйте! Подскажите пожалуйста решение одной проблемы... Мне надо считать из файла все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.