Skip to content

Instantly share code, notes, and snippets.

@jamo
Forked from anonymous/MuistavaSanakirja.java
Created June 1, 2012 06:53
Show Gist options
  • Save jamo/2849689 to your computer and use it in GitHub Desktop.
Save jamo/2849689 to your computer and use it in GitHub Desktop.
#mooc.fi 139.MuistavaSanakirja
package sanakirja;
import java.io.IOException;
public interface MuistavaSanakirja {
void lisaa(String sana, String kaannos);
String kaanna(String sana);
void poista(String sana);
void lataa() throws IOException;
void talleta() throws IOException;
}
package sanakirja;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class OmaMuistavaSanakirja implements MuistavaSanakirja {
private String tiedostonNimi;
private HashMap<String, String> kaannokset;
private Scanner lukija;
public OmaMuistavaSanakirja(String tiedostonNimi) {
this.tiedostonNimi = tiedostonNimi;
this.kaannokset = new HashMap<String, String>();
}
@Override
public void lisaa(String sana, String kaannos) {
this.kaannokset.put(sana, kaannos);
}
@Override
public String kaanna(String sana) {
return this.kaannokset.get(sana);
}
@Override
public void poista(String sana) {
this.kaannokset.remove(sana);
}
@Override
public void lataa() throws IOException {
ArrayList<String> sanat = lueSanat();
for (int i = 0; i < sanat.size() - 1; i += 2) {
this.kaannokset.put(sanat.get(i), sanat.get(i+1));
}
}
@Override
public void talleta() throws IOException {
FileWriter kirjoittaja = new FileWriter(tiedostonNimi);
StringBuilder sb = new StringBuilder();
for (String sana : kaannokset.keySet()) {
sb.append(sana).append(" ");
sb.append(kaanna(sana)).append("\n");
}
kirjoittaja.write(sb.toString());
kirjoittaja.close();
}
private ArrayList<String> lueSanat() {
File tiedosto = new File(tiedostonNimi);
try {
this.lukija = new Scanner(tiedosto, "UTF-8");
} catch (Exception e) {
//System.out.println("Virhe: " + e.getMessage());
}
ArrayList<String> luetut = new ArrayList<String>();
if (!tiedosto.isFile()) {
return luetut;
}
while (lukija.hasNext()) {
String sana = lukija.next();
if (!sana.isEmpty()) {
luetut.add(sana);
}
}
return luetut;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment