import java.util.Iterator; public class Konkurransegruppe implements Iterable { Seilfly første, siste; Konkurransegruppe() {} public void leggTil(Seilfly fly) { if (første == null) { første = fly; siste = fly; return; } siste.neste = fly; fly.forrige = siste; siste = fly; } public boolean erMed(String id) { Seilfly temp = første; while (temp != null) { if (id.equals(temp.hentId())) { return true; } temp = temp.neste; } return false; } public Seilfly taUt(String id) { Seilfly temp = første; while (temp != null) { if (id.equals(temp.hentId())) { if (første == temp && siste == temp) { første = null; siste = null; } else if (første == temp) { første = første.neste; første.forrige = null; } else if (siste == temp) { siste = siste.forrige; siste.neste = null; } else { temp.neste.forrige = temp.forrige; temp.forrige.neste = temp.neste; } return temp; } temp = temp.neste; } return null; } @Override public SeilflyIterator iterator() { return new SeilflyIterator(); } public class SeilflyIterator implements Iterator { Seilfly denne = første; @Override public boolean hasNext() { return denne != null; } @Override public Seilfly next() { Seilfly temp = denne; denne = denne.neste; return temp; } } public int tellEkteSeilfly() { int teller = 0; for (Seilfly fly : this) { if (fly instanceof EkteSeilfly) { teller++; } } return teller; } public Seilfly[] hentEkteSeilfly() { int lengde = tellEkteSeilfly(); Seilfly[] liste = new Seilfly[lengde]; int indeks = 0; for (Seilfly fly : this) { if (fly instanceof EkteSeilfly) { liste[indeks] = fly; indeks++; } } return liste; } public int besteGlidetall() { int beste = 0; for (Seilfly fly : this) { if (fly.hentGlidetall() > beste) { beste = fly.hentGlidetall(); } } return beste; } public int størstSpennvidde(Seilfly fly) { // basistilfellet if (fly.neste == null) { return fly.hentVingespenn(); } // rekursjonssteget int størst = størstSpennvidde(fly.neste); if (fly.hentVingespenn() > størst) { størst = fly.hentVingespenn(); } return størst; } public int[] histogramSpennvidde() { int[] array = new int[99 + 1]; for (Seilfly fly : this) { int spenn = fly.hentVingespenn(); if (spenn >= 10 && spenn <= 99) { array[spenn]++; } } return array; } }