Java Maps of Lamda

174
04 апреля 2021, 13:50

Требуется перевести оператор switch в лямбда-выражения. Для этого нужно сделать Map(у) с возможными командами, и в зависимости от символа сделать нужную операцию.

Вот моя неработающая попытка:


List<Operation> retValue2 = new ArrayList<>();
Map<String, Consumer<String>> activityMap = new HashMap<>();
Consumer<Integer> add = () -> {retValue2.add(new Operation(Operation.Type.ADD, +1));};
activityMap.put("+", add.accept());
Consumer<Integer> shift = () -> {retValue2.add(new Operation(Operation.Type.SHIFT, +1));};
activityMap.put(">", shift.accept());

Я пытался сделать это без Consumer, но я не понимаю, какой тип указать тогда в Map.

После нескольких попыток, решил, что нужно прийти к этому

List<Operation> retValue2 = new ArrayList<>(); Map<String, ТУТ НУЖНО ЧТО-то вставить> activityMap = new HashMap<>(); activityMap.put("+", () -> retValue2.add(new Operation(Operation.Type.ADD, +1)); activityMap.put(">", () -> retValue2.add(new Operation(Operation.Type.SHIFT, +1));

Answer 1

Кажется вам нужно использовать интерфейс Runnable.

Пример:

public static void main(String[] args) {
   List<String> retValue2 = new ArrayList<>();
   Map<String, Runnable> activityMap = new HashMap<>();
   activityMap.put("+", () -> retValue2.add("new Object()"));
   activityMap.put(">", () -> retValue2.add("124"));
   activityMap.forEach((key, value) -> value.run());
   System.out.println(retValue2.toString());
}

Вывод в консоли: [new Object(), 124]

READ ALSO
Как запустить чужой проект в Intellij Idea

Как запустить чужой проект в Intellij Idea

Все классы подсветились оранжевым и написано что нет SDKSDK подключил 1

299
Запись данных из .json файла в JTable

Запись данных из .json файла в JTable

У меня естьjson файл типа:

111
Поиск в базе данных Spring MVC и JPA

Поиск в базе данных Spring MVC и JPA

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

124
анимация растущей линии на Canvas

анимация растущей линии на Canvas

Подскажите, как реализовать эффект постепенно растущей линии на canvasВот простой пример на canvas

115