Я пытаюсь создать эквивалент Java Array#map
в Java.
Я смог сделать это с помощью
ArrayList<String> data = myList.stream().map(e -> {
return "test "+e;
}).collect(Collectors.toCollection(ArrayList::new));
Здесь,myList
- это начальное значение ArrayList
, а data
- это полученное значение ArrayList
.
Однако я нахожу очень утомительным делать это каждый раз.
Поэтому я попытался создатьуниверсальная функция, которая облегчит мою жизнь:
public static ArrayList<?> map(ArrayList<?> list, Function<? super Object,?> callback){
return list.stream().map(callback).collect(Collectors.toCollection(ArrayList::new));
}
И затем вызову ее с помощью:
ArrayList<String> data = DEF.map(myList,e -> {
return "test "+e;
});
Но я получаю ошибку
[Java] Карта методов (ArrayList, Function) в типе DEF не применима для аргументов (List, (e) -> {})
Как я могу отредактировать свою универсальную функцию для принятия лямбда-выраженияЯ пользуюсь?