-
Vesa Lappalainen authoredVesa Lappalainen authored
SanatMap.java 2.29 KiB
package tiedosto;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;
import fi.jyu.mit.ohj2.Tiedosto;
/**
* Luokka sanojen esiintymismrien laskemiseksi. Toteutettu
* HashMap-luokalla ja erillisell Laskuri-luokalla.
* @author Vesa Lappalainen
* @version 1.0, 16.03.2003
*/
@SuppressWarnings("javadoc")
public class SanatMap {
public static class Laskuri {
private int arvo;
public Laskuri(int arvo) { this.arvo = arvo; }
public void lisaa() { arvo++; }
@Override
public String toString() { return ""+arvo; }
}
private Map<String, Laskuri> alkiot = new HashMap<>();
public void lisaa(String s) {
Laskuri sana = alkiot.get(s);
if ( sana != null ) {
sana.lisaa();
return;
}
sana = new Laskuri(1);
alkiot.put(s,sana);
}
public void tulosta(OutputStream os) {
@SuppressWarnings("resource")
PrintStream out = Tiedosto.getPrintStream(os);
Set<Entry<String,Laskuri>> entrySet = alkiot.entrySet();
for (Iterator<Entry<String, Laskuri>> i=entrySet.iterator(); i.hasNext(); )
out.println(i.next());
}
public void kasitteleRivi(String rivi) {
String sana;
StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-");
while ( st.hasMoreTokens() ) {
sana = st.nextToken();
lisaa(sana);
}
}
public void lueTiedosto(String tied) throws IOException {
@SuppressWarnings("resource")
BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied);
if ( fi == null ) throw new FileNotFoundException("Ei lydy: " + tied);
try {
String rivi;
while ( ( rivi = fi.readLine() ) != null ) {
kasitteleRivi(rivi);
}
} finally {
fi.close();
}
}
public static void main(String[] args) {
SanatMap sanat = new SanatMap();
sanat.lisaa("kissa");
sanat.lisaa("kissa");
sanat.lisaa("koira");
sanat.tulosta(System.out);
sanat.kasitteleRivi("kissa, istuu kissa puussa");
sanat.tulosta(System.out);
}
}