1 import java.io.*;
2 import fi.jyu.mit.ohj2.*;
3 import java.util.StringTokenizer;
4 import java.util.SortedMap;
5 import java.util.TreeMap;
6 import java.util.Set;
7 import java.util.Iterator;
8
9
15 public class SanatSortedMap {
16
17 public class Laskuri {
18 private int arvo;
19 public Laskuri(int arvo) { this.arvo = arvo; }
20 public void lisaa() { arvo++; }
21 public String toString() { return ""+arvo; }
22 }
23
24
25 SortedMap alkiot = new TreeMap();
26
27 public void lisaa(String s) {
28 Laskuri sana = (Laskuri)alkiot.get(s);
29 if ( sana != null ) {
30 sana.lisaa();
31 return;
32 }
33 sana = new Laskuri(1);
34 alkiot.put(s,sana);
35 }
36
37 public void tulosta(OutputStream os) {
38 PrintStream out = Tiedosto.getPrintStream(os);
39 Set entrySet = alkiot.entrySet();
40 for (Iterator i=entrySet.iterator(); i.hasNext(); )
41 out.println(i.next());
42 }
43
44
45 public void kasitteleRivi(String rivi) {
46 String sana;
47 StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-");
48 while ( st.hasMoreTokens() ) {
49 sana = st.nextToken();
50 lisaa(sana);
51 }
52 }
53
54 public void lueTiedosto(String tied) throws IOException {
55 BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied);
56 if ( fi == null ) throw new FileNotFoundException("Ei löydy: " + tied);
57
58 try {
59 String rivi;
60 while ( ( rivi = fi.readLine() ) != null ) {
61 kasitteleRivi(rivi);
62 }
63 } finally {
64 fi.close();
65 }
66 }
67
68
69 public static void main(String[] args) {
70 SanatSortedMap sanat = new SanatSortedMap();
71 sanat.lisaa("kissa");
72 sanat.lisaa("kissa");
73 sanat.lisaa("koira");
74 sanat.tulosta(System.out);
75 sanat.kasitteleRivi("kissa, istuu kissa puussa");
76 sanat.tulosta(System.out);
77 }
78 }
79