Используйте коллекцию google. Пример:
Function transform = new Function() {
@Override
public Long apply(ViewValue from) {
return from.getId();
}
};
List list = Lists.newArrayList();
List idsList = Lists.transform(list, transform);
UPDATE:
На Java 8 вам не нужен Guava. Вы можете:
import com.example.ViewValue;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
Function transform = ViewValue::getId;
List source = new ArrayList<>();
List result = source.stream().map(transform).collect(Collectors.toList());
Или просто:
List source= new ArrayList<>();
List result = source.stream().map(ViewValue::getId).collect(Collectors.toList());
СЛЕДУЮЩЕЕ ОБНОВЛЕНИЕ (последнее после изменения Javaslang на Vavr):
В настоящее время это стоит упомянуть о решении с библиотекой Javaslang ( http://www.javaslang.io/ ) библиотека Vavr ( http://www.vavr.io/ ). Предположим, что у нас есть наш список с подлинными объектами:
List source = newArrayList(new ViewValue(1), new ViewValue(2), new ViewValue(2));
Мы могли бы сделать преобразование с помощью класса List из библиотеки Javaslang (в конечном счете сбор не удобен):
List result = io.vavr.collection.List.ofAll(source).map(ViewValue::getId).toJavaList();
Но вы увидите власть только с списками Javaslang:
io.vavr.collection.List source = javaslang.collection.List.of(new ViewValue(1), new ViewValue(2), new ViewValue(3));
io.vavr.collection.List res = source.map(ViewValue::getId);
Я рекомендую посмотреть доступные коллекции и новые типы в этой библиотеке (особенно мне нравится тип Try). Вы найдете документацию по следующему адресу: http://www.javaslang.io/javaslang-docs/ http://www.vavr.io/vavr-docs/ .
PS. Из-за Oracle и слова «Java» в названии им пришлось изменить имя библиотеки из javaslang на что-то еще. Они решили Вавра.