Skip to content
Snippets Groups Projects
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);
  }
}