Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

BinaryComputingIterator er en Iterator<Double>-implementasjon som henter verdiene fra to andre iteratorer, gjør en binær operasjon på de to verdiene og gir ut resultet når next()-metoden blir kalt. Dette gjøres ved hjelp av BinaryOperator<Double>-grensesnittet, som representerer en uspesifisert binær operasjon. Grensesnittet BinaryOperator<Double>-grensesnittet har en apply-metode som lar en beregne resultatet av den binære operasjonen:

...

Det skal være mulig å gi standardverdier som vil bli brukt dersom iteratorene har ulikt antall verdier, default1 og  og default2. Disse skal brukes når en iterator har flere verdier, men den andre iteratoren ikke har flere verdier.

 

BinaryComputingIterator-klassen har følgende konstruktør:to konstruktører, en med og en uten standardverdier:

  • BinaryComputingIterator(Iterator<Double> iterator1, Iterator<Double> iterator2, BinaryOperator<Double> operator)
  • BinaryComputingIterator(Iterator<Double> iterator1, Iterator<Double> iterator2, Double default1, Double default2, BinaryOperator<Double> operator)

hvor iterator1 og iterator2 er iteratorene som blir kombinert av BinaryComputingIterator, og default1 og default2 er standardverdier for de respektive iteratorene.

...

  • boolean hasNext() - returnerer true dersom minst én av iteratorene har flere verdier, og false dersom ingen av iteratorene har flere verdier. Dersom kun én iterator har flere verdier returnerer metoden kun true dersom det er definert en standardverdi for den tomme iteratoren.
  • Double next() - returnerer resultatet av å bruke binæroperasjonen operator på de neste verdiene fra sub-iteratorene, og bruker standardverdier dersom en av iteratorene ikke har flere verdier.

 

JExercise-testkode for BinaryComputing for BinaryComputingIterator er her: delegation/BinaryComputingIteratorTest.java. Originalkoden (jextest) for testen finner du her: delegation/BinaryComputingIterator.jextest

 

BinaryOperator-implementasjoner kan lett genereres ved hjelp av Java 8 lambda-notasjon. Dersom man for eksempel vil bruke en addisjonsoperator kan det se slik ut:

Code Block
Iterator<Double> iterator1 = new Arrays.asList(2.0, 3.0).iterator();
Iterator<Double> iterator2 = Arrays.asList(5.0).iterator();
BinaryComputingIterator binaryIterator = new BinaryComputingIterator(iterator)(iterator1, iterator2, null, 10.0, (x, y) -> x+y);
 
binaryIterator.next();   // 7.0
binaryIterator.hasNext() // true
binaryIterator.next()    // 13.0
binaryIterator.hasNext() // false

 

Include Page
Bunntekst for JExercise-oppgaver
Bunntekst for JExercise-oppgaver