Я новичок в java 8 и имею условие, в котором есть некоторые проверки, которые необходимо выполнить для создания объекта. Я, конечно, использую потоки для этого, и у меня было трудное время для этого.Обработка вложенных операторов if/else с использованием потоков Java 8
Ввод - это объект HashMap с парами ключ/значение, а вывод должен быть ниже.
| userrole | userid | username | output |
|------------|--------|----------|----------|
| "" (blank) | 111 | amathews | 111 |
| "" | | amathews | amathews |
| Admin | 111 | amathews | 111 |
| Admin | 111 | "" | 111 |
| Admin | | amathews | Admin |
Вот как следует идентификатор пользователя userid> userrole>.
Каждый объект HashMap будет содержать имя пользователя/имя пользователя/пользователя в качестве ключа и его значения вместе с другими парами ключ/значение. У нас будет куча вложенных операторов if/else для выполнения этой задачи до версии java.
У нас будет куча вложенных операторов if/else для выполнения этой задачи в предыдущей версии java.
Вот код, который я до сих пор.
map.entrySet().stream()
.filter(e -> e.getValue() instanceof String || e.getValue() instanceof Integer)
.filter(e -> e.getKey().contains("userrole") || e.getKey().contains("userid") || e.getKey().contains("username"))
.map(e -> e.getValue())
.collect(Collectors.toList());
Я знаю, что способ, которым я написал функцию отображения в потоке, также неверен. Как это сделать в java 8? Я не знаю, как добавить здесь вложенную часть if/else.
Пожалуйста, помогите мне здесь. Я застрял и не смог продолжить. Благодарю.
Редактировать: Sorry Если бы я не задал проблему точно. Вот код snippiet.
public List<UserAction> getUserActionList(Map<String, String> map)
{
String userRole = map.get("userrole");
String userName = map.get("username");
String userId = map.get("userid");
String output = null;
// if userrole, userid and username are not null/empty, then output is userid
if(!checkForNullEmpty(userRole) && !checkForNullEmpty(userId) && !checkForNullEmpty(userName))
output = userId;
// if userrole and userid are null/empty and username is not empty/null, then output is username
else if(checkForNullEmpty(userRole) && checkForNullEmpty(userId) && !checkForNullEmpty(userName))
output = userName;
// if userid and username are null/empty and userrole is not empty/null, then output is userrole
else if(!checkForNullEmpty(userRole) && checkForNullEmpty(userId) && checkForNullEmpty(userName))
output = userRole;
List<UserAction> udList = new ArrayList<>();
// Add the map and output into a UserAction object
udList.add(new UserAction(map, output));
return udList;
}
Я обработал здесь только 3 условия согласно таблице. Таким образом, это необходимо для рефакторинга для использования потоков java 8. Надеюсь, теперь это имеет смысл.
Какова ваша фактическая проблема? Не работает ли код, который вы опубликовали? Если нет, почему бы и нет? Если это сработает, что именно вы спрашиваете? Возможно, опубликуйте какой-нибудь исполняемый код с образцами данных и нужный тип данных должен быть – Bohemian
Спасибо за ваш ответ. Я добавил, что фрагмент надеется, что теперь это ясно. – 15R6
Гарантировано ли, что хотя бы одно из значений будет найдено на карте? – Bohemian