- 1
foos.removeAll(Collections.singleton(null));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+69
foos.removeAll(Collections.singleton(null));
foos.remove(null)?не, не наш метод.
(Если погуглить "как сварить часы" в кавычках, находится только эта страница. Видимо, здесь знают толк в варке часов.)
Если воспринимать рецепты блюд как скрипты для поваров, то, наговнокодив в них, можно неплохо навредить.
Взять хотя бы тот случай, когда забыли написать, что в кастрюлю надо налить воды перед варкой сгущёнки, и пришлось изымать из продажи все экземпляры книги с рецептами.
А еще какая нибудь польза от Collections.singleton() есть, или только дыры затыкать?
Мне, как человеку непосвященному, кажется что Collections.singleton(X) это не очень нужная обвертка для X
Каждый раз создается лишний промежуточный объект с null. Константа - лучше.
2 bormand
>Забавно, но почему-то у коллекции нет метода removeAll с одним элементом, а не с коллекцией
>removeAll с одним элементом
Узко мыслите. Нужен с массивом/вараргом.
Хотя, возможно, я чутка погорячился с универсальностью.
Проблема в том если делать качественное удаление по массиву - надо проверять длину и если больше N, то всё-равно создавать Set для пущей эффективности. Чтобы отсечь возможные дубликаты, и не получить полный скан O(len(arr)*len(coll)).
Для одного элемента - разумно. А больше, то сам сделай какую считаешь нужным коллекцию с быстрым contains() и удоляй.