001    /**
002     * Esimerkki linkitetytstä listasta Java 1.5:n geneerisyyttä
003     * ja "autoboxingia" käyttäen.
004     * @author Vesa Lappalainen
005     * @version 1.0, 16.03.2002
006     * @version 1.1, 01.03.2005
007     */
008    
009    public class LinListaGen<TYPE> {
010    
011      /**
012       * Linkitetyn listan yksi alkio.  Sisältää datan ja viitteen seuraavaan.
013       */
014      static public class Alkio<TYPE> {
015        private TYPE i;
016        private Alkio seuraava;
017        public Alkio(TYPE i) { this.i = i; seuraava = null; }
018        public TYPE getI() { return i; }
019      }
020    
021      private Alkio eka;
022      private Alkio viimeinen;
023    
024      public LinListaGen() { eka = null; viimeinen = null; }
025      public LinListaGen(int koko) { this(); }
026    
027      public void lisaa(int i) {
028        Alkio uusi = new Alkio(i);
029        if ( eka != null ) viimeinen.seuraava = uusi;
030        else eka = uusi;
031        viimeinen = uusi;
032      }
033    
034      public String toString() {
035        StringBuffer s = new StringBuffer("");
036        for (Alkio i=eka; i!=null; i = i.seuraava )
037          s.append(" " + i.getI());
038        return s.toString();
039      }
040    
041      public static void main(String[] args) {
042        LinListaGen<Integer> luvut = new LinListaGen<Integer>();
043        try {
044          luvut.lisaa(0); luvut.lisaa(2);
045          luvut.lisaa(99);
046        } catch ( Exception e ) {
047          System.out.println("Virhe: " + e.getMessage());
048        }
049        System.out.println(luvut);
050      }
051    }