Хочу преобразовать массив некоторых идентификаторов (все типа int) в список с некоторой попутной фильтрацией ( в список не нужно добавлять все идентификаторы). Вот код: ArrayList visitorsIdexes = Arrays.stream(targetVisitors)
.filter(id -> checkVisitor(id, target.getTargetSegmentCube()))
.map(id -> Integer.valueOf(id))
.collect(Collectors.toList());
Только оне не компилируется с такой проблемой:
Multiple markers at this line
Type mismatch: cannot convert from Collector
Ответ
Вы не преобразовали IntStream в Stream. По факту map(id -> Integer.valueOf(id)) ничего не делает, потому что map возвращает тот же IntStream. Чтобы преобразовать в объектный поток в общем случае нужен mapToObj, а в вашем конкретном проще всего написать boxed() ArrayList visitorsIdexes = Arrays.stream(targetVisitors)
.filter(id -> checkVisitor(id, target.getTargetSegmentCube()))
.boxed()
.collect(Collectors.toList());
Комментариев нет:
Отправить комментарий