Voor deze opdracht moet je zelf even een IntelliJ project aanmaken en deze code er in plakken.
Elke opdracht kan vertaald worden naar een enkele (static) methode. Dit betekent dat je in principe maar 1 klasse nodig hebt om de opdrachten uit te voeren.
Let op: Deze opdrachten zijn bedoeld om te oefenen met de Java Streams API. Je kan ze ook anders oplossen, maar dat is natuurlijk niet het doel!
Tel het aantal letters voor alle strings die beginnen met een “t” met behulp van een “normale” for-lus
Tel het aantal letters voor alle strings die beginnen met een “t” met behulp van een stream (map gevolgd door reduce).
Gebruik niet de methode operator (::)
Tel het aantal letters voor alle strings die beginnen met een “t” met behulp van een stream (map gevolgd door reduce). Gebruik de method operator (::) voor de map en reduce.
Hint: Kijk naar de sum() methode geïmplementeerd in de Integer klasse.
Tel alle woorden met een even aantal letters.
Wat is het gemiddelde aantal letters in de woorden?
Hint: gebruik .mapToInt() in combinatie met average() of .collect in combinatie met Collectors.averagingInt ().
Schrijf een methode int countLetters(String input)
die voor een gegeven input (een zin met meerdere woorden) telt hoeveel letters er in die zin staan.
Dus de input hello
moet het getal 5
opleveren.
hint Kijk eens in de api van de String klasse voor methoden die een stream retourneren.
Schrijf een methode String[] getWordsStartingWith(char letter, String input)
die voor een gegeven input en een gegeven letter, alle woorden uit input oplevert die beginnen met de meegegeven letter. Woorden mogen met een spatie gesplitst worden.
Dus de input this is a test
, gefilterd door de letter t
levert de volgende array op: ["this", "test"]
.
Schrijf een methode double calculateAverageWordLenght(String input)
die het gemiddelde aantal letters berekent voor een zin met één of meerdere woorden (gesplitst met een spatie).
Dus de input this is a long test
levert 3.0
op en this is a test
levert 2.75
op.
Schrijf een methode int[] countWordsStartingWith(char letter, String input)
die een zin filtert, zoals in opdracht 7 en dan telt hoeveel letters alle gefilterde woorden bevatten zoals opdracht 6.
Dus this is a test
, gefilterd bij de letter t
moet een array opleveren met de waarden [4, 4]
.
Er is al een unittest geimplementeerd in de tests
folder. Herschrijf de opdracht zodat de methoden een waarde terug geven, deze methoden kunnen dan eventueel static zijn.
Test alle opdrachten met verschillende input, het voorbeeld, maar ook andere lijsten of waarden.