#java #java_stream
Хочу преобразовать массив некоторых идентификаторов (все типа int) в список с некоторой попутной фильтрацией ( в список не нужно добавлять все идентификаторы). Вот код: ArrayListvisitorsIdexes = 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
Ответы
Ответ 1
Вы не преобразовали 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());
Комментариев нет:
Отправить комментарий