Я считаю, что Google Collections использует отложенное выполнение для большинства своих итераторов. Отложенное выполнение минимизирует количество создаваемых промежуточных объектов, поскольку устраняет большинство промежуточных / временных списков, которые могут быть созданы для каждого вызова (где, orderby и т. Д.).
По сути, каждый элемент, возвращаемый currentAssigned.iterator (), не рассчитывается до тех пор, пока вы не вызовете iterator.next (). А до тех пор ваша текущая назначаемая итерация - это просто набор операций, ничего более.
Вы беспокоитесь только о взрыве мини-объектов, если эти объекты работают дольше, чем продолжительность операции с одним элементом ... пиковое использование памяти в этом случае может быть довольно большим, и вы можете потенциально исчерпать память на очень больших списки или если вы конвертировали объекты (т.е. вызывали ToUpper () для всех строк или чего-то еще). Это будет иметь место только в том случае, если результат where () был другим списком, затем orderby () создал другой список и так далее.
Что касается ГХ, обрабатывающей много недолговечных объектов, то здесь проблем нет. Современный Java-сборщик мусора сильно оптимизирован, чтобы справиться с таким точным поведением.