|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
faustgreen PetroNotC Sharp faustgreen, Ну и какой практический вывод с этими потоками? Потоки не имеют отношения к стримам вообще. Пока спортивный интерес, хочу понять как там все устроено, а там может и польза будет. Как например со строками: String s = ""; s= s + "a"; s= s + "b"; s= s + "c"; ... Можно знать, что s= s + "b"; возвращает предыдущую строку + новую. Но зная внутреннюю структуру так делать не будешь. Дизассемблируй байткод и посмотри что внутри. Современные компилляторы 90% распознают это как StringBuilder. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 16:02 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
faustgreen спортивный интерес Баланс соблюдай. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 16:05 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
Погуглили немного про стримы, текущее понимание: Картинка из первого поста вроде как правильная, т.е. стрим это цепочка операций через которую "пролетают" элементы поштучно. Непонятки были с тем как в этой цепочке работает операция sorted и ей подобные. в этом посте нашел ответ: Код: java 1.
И тут . Код: java 1. 2.
Т.е. на этой операции происходит блокировка пока все элементы не достигнут этой операции. Вот тут еще приведен императивный аналог стрим выражения: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Императивный вариант: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Мне стало немного понятнее, может еще кому то пригордиться. А возможно я где то ошибся и меня поправят ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 22:05 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
Пока разбирался заметил еще одну штуку: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Если у нас источник сортированный то блокировки на операции сортед вроде как не происходит: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Если заменим IntStream.range(1, 5) на IntStream.of(8,4,7,1,3) то вывод будет: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 22:10 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
Твои эксперименты не имеют смысла пока ты САМ не сделаешь из них свои правильные выводы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 22:17 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
mayton, Это последний пост в теме, со стримами вроде разобрался. Просто, как писал выше, не люблю бездумно использовать методы, а сечас вроде все уложилось в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 22:37 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
Еще немного инфографики: https://annimon.com/article/2778 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 15:18 |
|
Устройство Stream-ов
|
|||
---|---|---|---|
#18+
mayton faustgreen пропущено... Пока спортивный интерес, хочу понять как там все устроено, а там может и польза будет. Как например со строками: String s = ""; s= s + "a"; s= s + "b"; s= s + "c"; ... Можно знать, что s= s + "b"; возвращает предыдущую строку + новую. Но зная внутреннюю структуру так делать не будешь. Дизассемблируй байткод и посмотри что внутри. Современные компилляторы 90% распознают это как StringBuilder. Разве начиная с Java 9 будет не StringConcatFactory? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2020, 01:53 |
|
|
start [/forum/topic.php?fid=59&startmsg=39938334&tid=2120784]: |
0ms |
get settings: |
8ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
45ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
142ms |
get tp. blocked users: |
0ms |
others: | 296ms |
total: | 502ms |
0 / 0 |