@jvmchat

Страница 2775 из 2890
Евгений
03.09.2018
17:58:16
какой нить unmodifiable?

я ковыряю легаси код Ланита

Ivan
03.09.2018
17:58:33
Это, конечно, плохой ответ, но длинный вариант явно определяет реализацию. А toList нужно знать изнутри. Никто, скорее всего, не будет менять внутри toList реализацию, но мало ли ?

Google
Nikolay
03.09.2018
17:59:07
а если модицифируем, то надо в ArrayList

Ivan
03.09.2018
17:59:31
Ну модификация результата немного не про streams

Сначала стримами фильтруем и мапим, а потом результат через итератор модифицируем?)

Евгений
03.09.2018
18:00:13
то есть стрим все таки возвращает немодифицируемый лист?

Ivan
03.09.2018
18:00:54
то есть стрим все таки возвращает немодифицируемый лист?
насколько помню, там внутри тот же самый ArrayList::new

можно глянуть сорцы

Nikolay
03.09.2018
18:01:12
Ну модификация результата немного не про streams
а мы не про стримс и говорим. мы избавляемся от перекладывания лишнего

Mikhail
03.09.2018
18:01:16
то есть стрим все таки возвращает немодифицируемый лист?
Для toList нет гарантии какой будет тип листа

Nikolay
03.09.2018
18:01:22
можно глянуть сорцы
однако контракт этого не обещает.

Ivan
03.09.2018
18:01:34
однако контракт этого не обещает.
именно это и был мой поинт выше

Nikolay
03.09.2018
18:02:04
Nikolay
03.09.2018
18:02:33
почему нет?

Google
Ivan
03.09.2018
18:02:48
так это уже будет новый list

Nikolay
03.09.2018
18:03:04
ээээ... шта?!

add или addAll порождают новый лист?

или таки вызываются на имеющемся?

Ivan
03.09.2018
18:04:02
public boolean addAll(Collection<? extends E> c) { Object[] a = c.toArray(); int numNew = a.length; ensureCapacityInternal(size + numNew); // Increments modCount System.arraycopy(a, 0, elementData, size, numNew); size += numNew; return numNew != 0; }

https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#arraycopy-java.lang.Object-int-java.lang.Object-int-int-

под arraylist лежит массив объектов, а они не умеют динамически менять размер. Когда ты создаешь массив, он получает DEFAULT_CAPACITY, либо тот, который ты указываешь. Добавляя элементы сверх этой нормы массив под низом нужно пересоздать, копируя в него все из предыдущего.

Nikolay
03.09.2018
18:09:42
молодец

you can read! как говорится

Ivan
03.09.2018
18:10:05
Nikolay
03.09.2018
18:10:15
только мысль была в том что если toList вернёт unmodifiable, то хрен ты на нём вызовешь addAll

и если тебе надо гарантировать тип объекта, чтобы не развалить кусок дальнейшей логики, toCollection (AL:new) вполне ок

Ivan
03.09.2018
18:11:19
public static <T> Collector<T, ?, List<T>> toList() { return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add, (left, right) -> { left.addAll(right); return left; }, CH_ID); }

Nikolay
03.09.2018
18:11:42
а мемкопи в современном мире настолько грошовое, что говорить про его стоимость как-то даже... стыдно

Ivan
03.09.2018
18:11:49
и если тебе надо гарантировать тип объекта, чтобы не развалить кусок дальнейшей логики, toCollection (AL:new) вполне ок
Я и не был против изначально, не знаю почему ты думаешь, что я другого мнения

Nikolay
03.09.2018
18:11:53
я вообще не спорю. я сказал зачем может понадобиться эррейлист - "долить данных"

дальше пошла какая-то мура про "выделение памяти"

Ivan
03.09.2018
18:12:46
Специально для тебя

* Returns a {@code Collector} that accumulates the input elements into a * new {@code List}. There are no guarantees on the type, mutability, * serializability, or thread-safety of the {@code List} returned; if more * control over the returned {@code List} is required, use {@link #toCollection(Supplier)}.

Google
Ivan
03.09.2018
18:13:11
Все, я кончил

Nikolay
03.09.2018
18:13:14
угу. поэтому та странная конструкция имеет право на жизнь. ну, как бы

Все, я кончил
и заляпал нам весь чат. убирай.

Таир
03.09.2018
18:28:02
я ковыряю легаси код Ланита
Охренеть, Жава 8 уже легаси?

Евгений
03.09.2018
18:29:17
ну вообще то да)

но речь не о джаве, а о коде

Alex
03.09.2018
18:29:25
++

Диоген
03.09.2018
18:31:14
у меня вот тут проекту 2 месяца, он уже легаси..

Tolegen
03.09.2018
18:32:09
Охренеть, Жава 8 уже легаси?
Ну так то 4 года назад вышла) уже того..

Таир
03.09.2018
18:36:01
Ну так то 4 года назад вышла) уже того..
Ну пока восьмерка ЛТС, она не может быть легаси

Таир
03.09.2018
18:37:21
Хотя, если вдуматься в значение слова — все что угодно может быть легаси

Все что написано человеком, который уже уволился — легаси ))

Даже если он вчера написал и сегодня уволился и переложил на тебя свой говнокод ))

Tolegen
03.09.2018
18:41:17
Ну пока восьмерка ЛТС, она не может быть легаси
Ну значит скоро станет) выход 11 по идее уже скоро

Nikolay
03.09.2018
18:46:37
всё, что страшно рефакторить - легаси

вдруг человек хорошо писал и ушёл так, что ему даже в спину не плюнули..

Google
Таир
03.09.2018
18:52:46
Другими словами легаси — это унаследованный техдолг

Nikolay
03.09.2018
18:53:00
да

но

как сказал один лысый - весь мир основан на долгах

главное вовремя закрывать наиболее дорогие

Shumilin
03.09.2018
19:13:33
Всем доброго! Ребята а можете подсказать, кто какие паттерны использует или просто считает обязательными для частого применения. 3-4 штуки?

Alexander
03.09.2018
19:27:50
стратегия конечно

Admin
ERROR: S client not available

Alexander
03.09.2018
19:27:53
потом конечно же мост

затем синглетон

затем фактори

а там еще может подтянутся фасад

за которым скрывается прокси и флайвейт

ну конечно это все должно быть в адаптере

который обвещан тремя декораторами

и создается как прототип

с отложеной инициализацией

и в фабричном методе хранителя

Shumilin
03.09.2018
19:31:23
нарвался на ответ называется ?

Alexander
03.09.2018
19:31:46
ну а чо

Google
Alexander
03.09.2018
19:31:47
как говорится

Roses are red, leaves are green, but only Java has AbstractSingletonProxyFactoryBean

ты лучше расскажи зачем тебе это понадобилось то в 2018 году

Shumilin
03.09.2018
20:02:02
а что в 2018 паттерны не нужны?

пообщался с человеком, хвалят толковой мол он, спросил пока была минутка, часто юзаешь? он - каждый день

вот стало интересно спросить тут мнение, в java сообществе

Диоген
03.09.2018
20:11:15
Каждый выебщик считает обязательным именно то, в чём он сам хорошо разбирается

Не обращай внимание

Nikolay
03.09.2018
20:15:13
примерно 99% паттернов, которые ты используешь постоянно, ты не выделяешь как паттерны. ты их просто юзаешь. вообще вопрос про паттерны выглядит как отсылка к собеседованиям.

ну создал ты коллекцию с кастомным компаратором

ты же не проговариваешь в голове "а вот тут я использовал паттерн СТРАТЕГИЯ"

(надеюсь)

Vitalii
03.09.2018
20:17:15
Да и слова фасад и декоратор в повседневной разработке используются.

Shumilin
03.09.2018
20:20:43
Да и слова фасад и декоратор в повседневной разработке используются.
вот примерно в таком контексте был разговор, не то что бы панацея, но с ними мол намного намного лучше

и если их не знаешь выучить стоит что бы вот автоматом создавать коллекцию с кастомным компаратором и понимать что так ок) ибо стратегия))

наверное....

Vitalii
03.09.2018
20:21:55
Ну вот относительно недавно меня даж один парень спрашивал, мол, правильно ли он понимает паттерн Стратегия.

Выяснилось, что его неправильно понимаю я))0)

В общим, такие разговоры — норм, если в тему, ящетаю.

Страница 2775 из 2890