Lambda, strumienie

0

Czesc,
od dluższego czasu próbuje rozwikłać takie zadanie:

Lista dest zawiera informacje o cenach przelotów w postaci napisów:
port_wylotu port_przylotu cena_w_EUR

Należy utworzyć listę wynikową, której elementy będą opisywać ceny przelotów do poszczególnych miejsc (tylko) z Warszawy w PLN i wypisać na konsoli jej kolejne elementy, używając następującego programu:

/*<-- niezbędne importy */

public class Main {

public static void main(String[] args) {
// Lista destynacji: port_wylotu port_przylotu cena_EUR
List<String> dest = Arrays.asList(
"bleble bleble 2000",
"WAW HAV 1200",
"xxx yyy 789",
"WAW DPS 2000",
"WAW HKT 1000"
);
double ratePLNvsEUR = 4.30;
List<String> result =
/*<-- tu należy dopisać fragment
* przy czym nie wolno używać żadnych własnych klas, jak np. ListCreator
* ani też żadnych własnych interfejsów
* podpowiedz: należy użyć strumieni
*/

for (String r : result) System.out.println(r);

}
}

Plik Main.java wolno modyfikować tylko w miejscach oznaczonych /*<-- */, a program ma wyprowadzić na konsolę:

to HAV - price in PLN: 5160
to DPS - price in PLN: 8600
to HKT - price in PLN: 4300

Wiem że można tu użyć takich metod jak .equals("WAW") i .split(" "), aczkolwiek nie potrafię ich wykorzystać ze względu na problem z lambdą. Proszę o pomoc w tym zadaniu jak mogłoby być to rozwiązane

0

To jakiś butcamp że parę dni wcześniej był ten sam temat? xD

1

O to chodzi?

List<String> result = dest.stream()
    .map(destination -> destination.split(" "))
    .filter(splittedDestination -> splittedDestination[0].equals("WAW"))
    .map(splittedDestination -> "to" + splittedDestination[1] + " - price in PLN: " + Integer.valueOf(splittedDestination[2]) * ratePLNvsEUR)
    .collect(Collectors.toList());
0

Tak, o to chodzi Tyverel, dzieki bardzo!

1 użytkowników online, w tym zalogowanych: 0, gości: 1