ObjektSamling.java [Last ned]

import static java.lang.System.*;
 
 
/*
 *  Klasse for representasjon av et antall objekt. 
 *  Klassen har metoder for søk, innsetting og sletting.
 *
 *  Sammenlign gjerne med AnsattSamling, som er en
 *  tilsvarende klasse spesialtilpasset Ansatt-objekt.
 *
 */
public class ObjektSamling {
 
  // Objektene vi skal ta vare på må tilhøre en klasse
  // som implementerer grensesnittet Element, dvs. at
  // de har en metode nøkkel.
 
  private Element[] tabell;
  private int       nesteLedige;
 
 
  public ObjektSamling(int antall) {
    tabell = new Element[antall];
    nesteLedige = 0;
  }
 
 
  // Finner objekt, gitt nøkkel.
  // Returnerer null hvis objektet ikke finnes.
  public Element finn(String nøkkel) {
    int pos = finnPos(nøkkel);
    if (pos >= 0) // funnet!
      return tabell[pos];
    else
      return null;
  }
 
 
 
  // Setter inn et objekt bakerst. Returnerer false
  // hvis et objekt med samme nøkkel finnes,
  // eller det ikke er ledig plass, og true ellers.
  public boolean settInn(Element elem) {
    boolean ny = finnPos(elem.nøkkel()) == -1;
    if ( ny && nesteLedige < tabell.length ) {
      tabell[nesteLedige] = elem;
      nesteLedige++;
      return true;
    }
    else
      return false;
  }
 
 
  // Sletter et objekt, gitt nøkkel. Returnerer
  // false hvis objektet ikke finnes, true ellers.
  public boolean slett(String nøkkel) {
    int pos = finnPos(nøkkel);
    if (pos >= 0) {
      nesteLedige--;
      tabell[pos] = tabell[nesteLedige];
      tabell[nesteLedige] = null;
      return true;
    }
    else
      return false;
  }
 
 
  public String toString() {
    String svar = "";
    for (int i=0; i<nesteLedige; i++)
      svar += tabell[i].toString() + "\n";
 
    return svar;
  }
 
 
  // Finner posisjonen til et objekt, gitt en nøkkel.
  // Leverer -1 hvis objektet ikke er der.
  private int finnPos(String nøkkel) {
    boolean funnet = false;
    int pos = 0;
    while ( pos<nesteLedige && !funnet ) {
      // Bruker metoden nøkkel for sammenligning
      if ( nøkkel.equals( tabell[pos].nøkkel() ) )
        funnet = true;
      else
        pos++;
    }
    if ( funnet )
      return pos;
    else
      return -1;
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.