Schreiben Sie in dieser Aufgabe Methoden, die Stream-Objekte für die Fibonaccizahlen erzeugen.
- Stream<TwoLong> fibPairs();
es soll der unendliche Stream erzeugt werden, aus Elementen der Klasse TwoLong, so dass in den Paaren immer zwei Fibonaccizahlen stehen entsprechend der folgenden Auflistung:
$(0,1),(1,1),(1,2),(2,3),(3,5),(5,8),(8,13),(13,21),\dots$
- Stream<Long> fibs():
Dieses soll der unendliche Stream aller Fibonaccizahlen sein. Die erste sei dabei die 0.
- Stream<Long> fibs100()
Dieser Stream soll über die ersten 100 Fibonaccizahlen iterieren.
- long fib(int i);
Es soll die i-te Fibonaccizahl berechnet werden. für $i=1$ sei das Ergebnis die Zahl 0.
In dieser Aufgabe wird ein Java 15 preview Feature verwendet: record. Der innere Record TwoInt entspricht der Klasse:
class TwoLong{
private long _i1;
private long _i2;
public TwoLong(long i1, long i2){
_i1 = i1;
_i2 = i2;
}
public long i1(){return _i1;}
public long i2(){return _i2;}
}
Zusätzlich werden toString, equals und hashcode passend generiert.
import java.util.stream.*;
class FibStream{
static public Stream<TwoLong> fibPairs(){
//TODO
return null;
}
static public Stream<Long> fibs(){
//TODO
return null;
}
static public Stream<Long> fibs100(){
//TODO
return null;
}
static public long fib(int n){
//TODO
return 0L;
}
}