Size: a a a

2020 October 26

T

Tagir in learn.java
Там гарантируется, что итератор видит состояние коллекции в момент создания итератора. То есть он точно не видит никаких модификаций после этого
источник

E

Em. in learn.java
Tagir
Есть концептуально простые коллекции - например, CopyOnWriteArrayList
Да вот как раз они через несколько страниц начинаются...

Спасибо за очень подробный ответ, теперь понятно. Просто гуглил этот вопрос, почему-то найденное и прочитанное плохо понял.
источник

GV

Gukov Viktor in learn.java
Bromles
Код на циклах

for(int i = 0; i < 3; i++)
{

for(int j = 0; j < 3; j++)
{
System.out.print(array[i][j] + " ");
}

System.out.println();
}

System.out.println("-------------");


Код на стримах

Arrays.stream(array).map(a -> Arrays.stream(a).mapToObj(String::valueOf).collect(Collectors.joining(" "))).peek(System.out::println).skip(2).map(x -> x = "-------------").forEach(System.out::println);

Поправьте меня, если на стримах можно сделать оптимальнее. Но пока что идея "вообще циклы не использовать, стримы читаемее" выглядит так себе
Как минимум можно просто сделать аккуратнее
        Arrays.stream(array)
               .map(Arrays::toString)
               .map(string -> string.split("\\s+"))
               .map(arr -> String.join(" ", arr))
               .forEach(System.out::println);
источник

B

Bromles in learn.java
благодарю
источник

T

Tagir in learn.java
Gukov Viktor
Как минимум можно просто сделать аккуратнее
        Arrays.stream(array)
               .map(Arrays::toString)
               .map(string -> string.split("\\s+"))
               .map(arr -> String.join(" ", arr))
               .forEach(System.out::println);
Фу. Не делайте так
источник

T

Tagir in learn.java
Не надо превращать структурированные данные в строку с единственной целью превратить строку назад в структурированные данные
источник

T

Tagir in learn.java
Это для программистов на перле подход нормальный.
источник

GV

Gukov Viktor in learn.java
Tagir
Не надо превращать структурированные данные в строку с единственной целью превратить строку назад в структурированные данные
Ты же понимаешь, что это просто вращение коней, с единственной целью - стилистической?
источник

GV

Gukov Viktor in learn.java
Несколько странно до этого придираться
источник

T

Tagir in learn.java
Нет, не понимаю. Так программировать просто нехорошо. Это потом вылезает боком неизвестно где
источник

T

Tagir in learn.java
Ты скопипастишь этот паттерн в другое место, где у тебя не числа, а объекты, и их строковое представление изредка имеет пробел. Потом радости будет полные штаны багрепорты разгребать
источник

GV

Gukov Viktor in learn.java
Tagir
Нет, не понимаю. Так программировать просто нехорошо. Это потом вылезает боком неизвестно где
ОП спросил: "у меня есть кусок кода на циклах, я хочу его перенести на стримы, чтобы посмотреть как это будет выглядеть. Получилось неаккуратное говно"
источник

T

Tagir in learn.java
Я видел сто раз, что это приводило к проблемам. И ни разу не было такого, что нельзя было нормально написать
источник

T

Tagir in learn.java
Gukov Viktor
ОП спросил: "у меня есть кусок кода на циклах, я хочу его перенести на стримы, чтобы посмотреть как это будет выглядеть. Получилось неаккуратное говно"
У него код на стримах корявый и можно красивее, это правда. Но у тебя он не просто корявый, а опасный, error-prone. Это канал для начинающих, и кто-нибудь на серьёзных щах может решить, что так лучше. Поэтому я и возмутился.
источник

D

Dima in learn.java
Bromles
Код на циклах

for(int i = 0; i < 3; i++)
{

for(int j = 0; j < 3; j++)
{
System.out.print(array[i][j] + " ");
}

System.out.println();
}

System.out.println("-------------");


Код на стримах

Arrays.stream(array).map(a -> Arrays.stream(a).mapToObj(String::valueOf).collect(Collectors.joining(" "))).peek(System.out::println).skip(2).map(x -> x = "-------------").forEach(System.out::println);

Поправьте меня, если на стримах можно сделать оптимальнее. Но пока что идея "вообще циклы не использовать, стримы читаемее" выглядит так себе
источник

D

Dima in learn.java
Tagir
У него код на стримах корявый и можно красивее, это правда. Но у тебя он не просто корявый, а опасный, error-prone. Это канал для начинающих, и кто-нибудь на серьёзных щах может решить, что так лучше. Поэтому я и возмутился.
мне кажется фразы для начинающих - да стримы хуже по перфомансе вообще, стримы нечитабельнее - намного опасней
источник

D

Dima in learn.java
и идут за последнее время они от 1 конкретного человека
источник

B

Bromles in learn.java
Dima
мне кажется фразы для начинающих - да стримы хуже по перфомансе вообще, стримы нечитабельнее - намного опасней
Где я говорил, что они всегда хуже по перформансу? Я специально бенчмарк делал и ссыль кидал с результатами, не утверждая. И там таки параллельные стримы обгоняли однопоточный фор
источник

T

Tagir in learn.java
Бенчмаркать стримы очень непросто. Крайне легко прийти к ложным выводам
источник

D

Dima in learn.java
Bromles
Где я говорил, что они всегда хуже по перформансу? Я специально бенчмарк делал и ссыль кидал с результатами, не утверждая. И там таки параллельные стримы обгоняли однопоточный фор
ну ты это всю неделю писал, дружище и какие-то очевидные замеры делал
источник