/** * */ package dyna; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.NoSuchElementException; /** * Esimerkki dynaamisesta taulukosta * @author vesal * @version 1.3.2011 */ public class TaulukkoGen implements Iterable{ /** * Luokka taulukon... * @author vesal * @version 1.3.2011 */ public static class TaulukkoTaysiException extends Exception { /** */ private static final long serialVersionUID = 1L; TaulukkoTaysiException(String viesti) { super(viesti); } } private TYPE[] alkiot; private int lkm; /** * Alustaa tyhjän taulukon */ public TaulukkoGen() { alkiot = (TYPE [])(new Object[5]); lkm = 0; } /** * Lisätään uusi alkio * @param luku lisättävän alkion arvo * TODO: mitä jos ei mahu? * @throws TaulukkoTaysiException jos taulukko tulee liian täyteen */ public void lisaa(TYPE luku) throws TaulukkoTaysiException { if ( lkm >= alkiot.length ) throw new TaulukkoTaysiException("Ei mahu ennää"); alkiot[lkm] = luku; lkm++; } /** * Laitetaan paikkaa i uusi arvo * @param i paikka johon laitetaan * @param luku uusi arvo * TODO: jos indeksi huono?? */ public void set(int i, TYPE luku) { alkiot[i] = luku; } /** * Palautetan paikassa i oleva arvo * @param i paikka josta otetaan * @return paikassa i oleva arvo * TODO: jos indeksi huono?? */ public TYPE get(int i) { return alkiot[i]; } @Override public String toString() { StringBuilder tulos = new StringBuilder(); for (int i=0; i luvut = new TaulukkoGen(); try { luvut.lisaa(0); // luvut.lisaa(new Integer(0)); // Autoboxing luvut.lisaa(2); // 1 luvut.lisaa(99); // 2 luvut.lisaa(99); // 2 } catch (TaulukkoTaysiException e) { System.out.println(e.getMessage()); } luvut.set(1,4); Integer alkio = luvut.get(2); int luku = alkio.intValue(); System.out.println(luku); System.out.println(luvut.toString()); for (int i:luvut) System.out.print(i + " "); // Collections.sort(luvut); } /** * @see java.lang.Iterable#iterator() */ @Override public Iterator iterator() { return new TaulukkoIterator(); } public class TaulukkoIterator implements Iterator { private int paikka; public TaulukkoIterator() { paikka = -1; } /** * @see java.util.Iterator#hasNext() */ @Override public boolean hasNext() { return paikka < lkm-1; } /** * @see java.util.Iterator#next() */ @Override public TYPE next() { if ( !hasNext() ) throw new NoSuchElementException("Ei oo ennää"); return (TYPE)alkiot[++paikka]; } /** * @see java.util.Iterator#remove() */ @Override public void remove() { throw new UnsupportedOperationException("Meillä ei poisteta"); } } }