Софтуерно Инженерство
Loading...
+ Нов въпрос
Vincent avatar Vincent 11 Точки

Stream в Java Fundamentals

Здравейте,

В момента се подготвям за изпита Programming Fundametals - Extened. Реших да се явя с Java на него и в момента имам малко проблеми с поготовката. Стхава въпрос за .stram()-овете и техния синтаксис. Питането ми е дали във Java Fundamentals модула, някаде се обясняват за за мога да погледна обяснението.

Поздрави

Тагове:
0
Java Fundamentals
MartinBG avatar MartinBG 1216 Точки

Може да погледнеш и тази тема, където съм качил решения на няколко проблема само с използване на стриймове.

0
Vincent avatar Vincent 11 Точки

Колеги благодаря за помоща! Гледам първото клипче от martinml и постепенно почвам да ги схващам нещата. По късно ще погледна и твоя линк.

Към момента имам проблем с String.join-ването и при принтирането на някакавъ масив искам да сложа разтояние/символ между отделните лементи.

Също искам да попитам дали тези неща са еквивалентни(едното разбира се е масив, а другото лист):

 

int[] dsada = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();

List<Integer> ht = Arrays.stream(reader.readLine().split(" ")).map(Integer::valueOf).collect(Collectors.toList());

0
27/11/2017 13:40:18
MartinBG avatar MartinBG 1216 Точки

Ето два начина за принтиране елементите на колекции, разделени със сепаратор:

System.out.println(myCollection.stream().collect(Collectors.joining(", ")));
System.out.println(String.join(", ", myCollection));

0
Vincent avatar Vincent 11 Точки

Да, аз ползвам първия. Когато го използвам с String работи.

List <String> name = Arrays.asList("Ivan","Filip","Pesho");
System.out.println(String.join("-",name));

Когато го ползвам с Integer, не. Знам че трябва да му дам MapToObj, но нещо не сработва.

List<Integer> num = Arrays.asList(1,2,3);
System.out.println(String.join("=",num));

Какъв е правилния синтаксис в този случай?

 

0
MartinBG avatar MartinBG 1216 Точки

joining работи със стрингове, т.е. трябва да мапнеш елементите към String:

List<Integer> num = Arrays.asList(1,2,3);
System.out.println(num.stream().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(String.join("=", num.stream().map(Object::toString).collect(Collectors.toList())));

Output:

1, 2, 3
1=2=3

Или така:

        System.out.println(num);
        System.out.println(num.toString().replaceAll("[\\[\\]]", ""));
        System.out.println(num.toString().replaceAll("[\\[\\]]", "").replaceAll(", ", "="));

Output:

[1, 2, 3]
1, 2, 3
1=2=3

0
27/11/2017 16:40:26