Kerhon jäsenrekisterissä käytettiin osoitintaulukkoa dynaamisesti. Vastaavan rakenteen tarve tulee usein ohjelmoinnissa. Tällöin tulee aina vastaan ongelma: montako alkiota taulukossa on nyt? Jäsenrekisterissä tämä oli ratkaistu Jasenet- luokassa tekemällä sinne kentät, joista nämä rajat selviävät.
Javassa edällä mainittu dynaaminen taulukko voidaan toteuttaa käyttäjän kannalta todella joustavaksi:
/** * Esimerkki dynaamisesta taulukosta * @author Vesa Lappalainen * @version 1.0, 02.03.2002 */ public class Taulukko { public class TaulukkoTaysiException extends Exception { TaulukkoTaysiException(String viesti) { super(viesti); } } private int alkiot[]; private int lkm; public Taulukko() { alkiot = new int[10]; } public Taulukko(int koko) { alkiot = new int[koko]; } public void lisaa(int i) throws TaulukkoTaysiException { if ( lkm >= alkiot.length ) throw new TaulukkoTaysiException("Tila loppu"); alkiot[lkm++] = i; } public String toString() { StringBuffer s = new StringBuffer(""); for (int i=0; i<lkm; i++) s.append(" " + alkiot[i]); return s.toString(); } public void set(int i, int luku) throws IndexOutOfBoundsException { if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i); alkiot[i] = luku; } public int get(int i) throws IndexOutOfBoundsException { if ( ( i < 0 ) || ( lkm <= i ) ) throw new IndexOutOfBoundsException("i = " + i); return alkiot[i]; } public static void main(String[] args) { Taulukko luvut = new Taulukko(); try { luvut.lisaa(0); luvut.lisaa(2); luvut.lisaa(99); } catch ( TaulukkoTaysiException e ) { System.out.println("Virhe: " + e.getMessage()); } System.out.println(luvut); luvut.set(1,4); System.out.println(luvut); int luku = luvut.get(2); System.out.println("Paikassa 2 on " + luku); luvut.set(21,4); } }