Предположим, что вы хотите создать копию объекта ImmutableSet
/ List
/ Map
, но отфильтровать некоторые исходные записи.Один из способов реализовать это:
ImmutableList.copyOf(Iterables.filter(myObject, myObject.EQUALS));
, где myObject.EQUALS
- это предикат операции Iterables.filter()
.Я думаю, что это довольно элегантная и легкая для чтения реализация.Тем не менее, один создает два списка объектов (сначала через вызов Iterables.filter(...)
, затем через ImmutableList.copyOf(...)
), что очень неэффективно.
Кто-нибудь знает более эффективный способ сделать это?
Полагаю, лучше всего было бы добавить предикаты фильтра к построителям ImmutableSet
/ List
/ Map
, чтобы объект создавался только один раз.Но, к сожалению, такого параметра нет.