2017-02-09 4 views
1

У меня есть, например, List<Cat> с классом Cat, содержащий поле типа Tail. Я хочу, чтобы List<Tail> обеспечивал живой просмотр хвостов кошек из первого списка. Есть ли известная реализация List, которая принимает другой список и функцию отображения, такую ​​как cat -> cat.tail?Коллекция Java, которая отображает каждый элемент в поле этого элемента

+0

Нет там нет такой вещи доступны. Все, что вы можете получить, это _snapshot_, извлекая все хвосты у всех кошек, но это не будет обновляться, если один кот «обновит» свой хвост на другой (т. Е. «Cat.tail = new Tail();')). – Tom

+2

Что вам нужно сделать, это расширить 'AbstractList ' и реализовать' get (int) 'и' size() '. –

+0

@Tom Это, естественно, само обновление, если реализация List делегирует все методы базовому «списку » с функцией отображения «cat -> cat.tail», о которой я упомянул. – user1854611

ответ

4

гуавы-х Lists.transform не делает именно то, что: javadoc

в вашем примере tails = Lists.transform(cats, Cat::getTail)

Смежные вопросы