/** * Luokka, joka laskee yhden sanan esiintymiskertoja * @author Vesa Lappalainen * @version 1.0, 11.03.2003 * @version 1.1, 22.04.2005 * * Muutettu: * - Toteutettu equals ja hashCode-metodit ja Comparable-rajapinta, * jotta voidaan käyttää TreeSetissa. vertailussa merkitsevää vain teksti. * Miika Nurminen / 22.04.2005 */ public class Sana2 implements Comparable { private String teksti; private int lkm; public Sana2(String teksti) { this.teksti = teksti; } public int lisaa() { lkm++; return lkm; } public String toString() { return teksti + " = " + lkm; } public boolean oletko(String sana) { return teksti.equals(sana); } public int compareTo(Object o) { if (!(o instanceof Sana2)) throw new ClassCastException("not comparable objects!"); return teksti.compareTo(((Sana2)o).teksti); } public boolean equals(Object o) { if (!(o instanceof Sana2)) throw new ClassCastException("not comparable objects!"); return teksti.equals(((Sana2)o).teksti); } public int hashCode() { return teksti.hashCode(); } private static void testaa(String s, boolean result) { System.out.println(s+" onnistui:"+result); } public static void main(String[] args) { // testataan assert-lauseita Sana2 sana = new Sana2("kissa"); Sana2 sana2 = new Sana2("koira"); Sana2 sana3 = new Sana2("kissa"); sana3.lisaa(); System.out.println(sana); System.out.println(sana2); System.out.println(sana3); int i = sana.compareTo(sana2); testaa(""+i,i<0); boolean b = sana.equals(sana2); testaa(""+b,b==false); i = sana.compareTo(sana3); testaa (""+i,i==0); b = sana.equals(sana3); testaa(""+b,b==true); } }