001 import java.io.*; 002 import fi.jyu.mit.ohj2.*; 003 import java.util.StringTokenizer; 004 import java.util.SortedSet; 005 import java.util.TreeSet; 006 import java.util.Set; 007 import java.util.Iterator; 008 import java.util.Collections; 009 import java.util.Collection; 010 011 /** 012 * Luokka sanojen esiintymismäärien laskemiseksi. Toteutettu 013 * SorterSet-rakenteella. Jäi kesken eikä toimi vielä. 014 * @author Vesa Lappalainen 015 * @version 1.0, 16.03.2003 016 */ 017 public class SanatSortedSet { 018 019 public class Laskuri { 020 private int arvo; 021 public Laskuri(int arvo) { this.arvo = arvo; } 022 public void lisaa() { arvo++; } 023 public String toString() { return ""+arvo; } 024 } 025 026 027 Set alkiot = new TreeSet(); 028 /* 029 public void lisaa(String s) { 030 Laskuri sana = (Laskuri)Collections.binarySearch(alkiot,s); 031 if ( sana != null ) { 032 sana.lisaa(); 033 return; 034 } 035 sana = new Laskuri(1); 036 alkiot.put(s,sana); 037 } 038 039 public void tulosta(OutputStream os) { 040 PrintStream out = Tiedosto.getPrintStream(os); 041 Set entrySet = alkiot.entrySet(); 042 for (Iterator i=entrySet.iterator(); i.hasNext(); ) 043 out.println(i.next()); 044 } 045 046 047 public void lisaa_rivi(String rivi) { 048 String sana; 049 StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-"); 050 while ( st.hasMoreTokens() ) { 051 sana = st.nextToken(); 052 lisaa(sana); 053 } 054 } 055 056 public void lue_tiedosto(String tied) throws IOException { 057 BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied); 058 if ( fi == null ) throw new FileNotFoundException("Ei löydy: " + tied); 059 060 try { 061 String rivi; 062 while ( ( rivi = fi.readLine() ) != null ) { 063 lisaa_rivi(rivi); 064 } 065 } finally { 066 fi.close(); 067 } 068 } 069 070 */ 071 public static void main(String[] args) { 072 /* 073 SanatSortedSet sanat = new SanatSortedSet(); 074 sanat.lisaa("kissa"); 075 sanat.lisaa("kissa"); 076 sanat.lisaa("koira"); 077 sanat.tulosta(System.out); 078 sanat.lisaa_rivi("kissa, istuu kissa puussa"); 079 sanat.tulosta(System.out); 080 */ 081 } 082 }