1   /**
2    * Esimerkki linkitetytstä listasta Java 1.5:n geneerisyyttä
3    * ja "autoboxingia" käyttäen.
4    * @author Vesa Lappalainen
5    * @version 1.0, 16.03.2002
6    * @version 1.1, 01.03.2005
7    * @param <TYPE> tuuppi, jota talletetaan
8    */
9   
10  public class LinListaGen<TYPE> {
11  
12    /**
13     * Linkitetyn listan yksi alkio.  Sisältää datan ja viitteen seuraavaan.
14     * @param <TYPE> tyyppi jota talletetaan 
15     */
16    static public class Alkio<TYPE> {
17      private TYPE i;
18      private Alkio<TYPE> seuraava;
19      public Alkio(TYPE i) { this.i = i; seuraava = null; }
20      public TYPE getI() { return i; }
21    }
22  
23    private Alkio<TYPE> eka;
24    private Alkio<TYPE> viimeinen;
25  
26    public LinListaGen() { eka = null; viimeinen = null; }
27    public LinListaGen(int koko) { this(); }
28  
29    public void lisaa(TYPE i) {
30      Alkio<TYPE> uusi = new Alkio<TYPE>(i);
31      if ( eka != null ) viimeinen.seuraava = uusi;
32      else eka = uusi;
33      viimeinen = uusi;
34    }
35  
36    public String toString() {
37      StringBuffer s = new StringBuffer("");
38      for (Alkio<TYPE> i=eka; i!=null; i = i.seuraava )
39        s.append(" " + i.getI());
40      return s.toString();
41    }
42  
43    public static void main(String[] args) {
44      LinListaGen<Integer> luvut = new LinListaGen<Integer>();
45      try {
46        luvut.lisaa(0); luvut.lisaa(2);
47        luvut.lisaa(99);
48      } catch ( Exception e ) {
49        System.out.println("Virhe: " + e.getMessage());
50      }
51      System.out.println(luvut);
52    }
53  }
54