Если вы преобразуете List
элемента для удаления в Set
, он должен быть быстрее:
vAllBatchList.removeAll(new HashSet<>(vKeepableBatchCollection));
Это предполагает, что Batch
переопределяет класс hashCode
и equals
правильно .
Объяснение: removeAll
для ArrayList
(я предполагаю, что ваш vAllBatchList
List
является ArrayList
) итерирует по всем элементам List
, для которых он вызывается, и проверяет, содержит ли переданный Collection
их. Если переданный Collection
является Set
, contains
займет ожидаемое постоянное время (O(1)
), а если Collection
- List
, это займет линейное время (O(n)
).
Конечно, если вы можете напрямую сгенерировать Set
элементов vKeepableBatchCollection
вместо того, чтобы сначала создать List
, а затем преобразовать его в Set
, это было бы еще лучше.