Stream в Java Fundamentals
Здравейте,
В момента се подготвям за изпита Programming Fundametals - Extened. Реших да се явя с Java на него и в момента имам малко проблеми с поготовката. Стхава въпрос за .stram()-овете и техния синтаксис. Питането ми е дали във Java Fundamentals модула, някаде се обясняват за за мога да погледна обяснението.
Поздрави
Ето два начина за принтиране елементите на колекции, разделени със сепаратор:
System.out.println(myCollection.stream().collect(Collectors.joining(", ")));
System.out.println(String.join(", ", myCollection));
Да, аз ползвам първия. Когато го използвам с String работи.
Когато го ползвам с Integer, не. Знам че трябва да му дам MapToObj, но нещо не сработва.
Какъв е правилния синтаксис в този случай?
joining работи със стрингове, т.е. трябва да мапнеш елементите към String:
Output:
1, 2, 3
1=2=3
Или така:
Output:
[1, 2, 3]
1, 2, 3
1=2=3
Получи се благодаря! А дали може да ми кажеш каква е разликата в следните два map-а
и
mapToInt връща IntStream, който е стрийм от int (примитивен тип) и има няколко допълнителни метода (напр. sum) за работа с int. На теория би следвало да е една идея по-бърз от stream от Integer, защото не се налага boxing/unboxing при някои операции.
Здравей дали ще може да ми помогнеш още малко с stream-овете. решавам езна задача и има изискване за памет. Сменям от Intiger на Byte и кода се чупи. какт трябва да процедирам?
Също, ако може да ми кажеш има ли начин да вкарам if в Stream-a и да филтрирам по него.
Въпросите ти са твърде общи, за да мога да ти дам конкретен отговор.
Кастването от по-голям към по-малък тип (напр. Integer/int -> Byte/byte) е опасна операция, защото може да доведе до невалиден резултат в повечето случаи. Валидните стойности за byte са от -128 до 127 (8 бита), докато int е 32 битов. Тук можеш да прочетеш повече за размера на примитивните типове в Java.
Стриймовете в Java имат .filter(условие) метод.
Напр. ако искаме да филтрираме и използваме само числата между -100 и 100, може да използваме следният филтър: