Set を実装するクラス WordCount がありますが、Word クラスからメソッドを取得する WordCount クラスで comareTo メソッドを使用するのに問題があります。Word オブジェクトと String オブジェクトを比較しようとしていますが、最終的に Word も String であるため、エラーが発生するのはなぜですか?
単語クラス
public class Word implements Comparable<String>{
String word;
int count;
public Word(String s)
{
word = s;
count = 1;
}
@Override
public int compareTo(String o) {
return word.compareTo(o);
}
@Override
public String toString()
{
return word + "(" + count + ")";
}
}
compareTo メソッドを使用すると、このクラスでエラーが発生します
public class WordCount implements Set<Word>{
private Word[] items;
private int size;
public WordCount()
{
items = new Word[5];
size = 1;
}
@Override
public void add(Word s)
{
int i = 0;
//grow array as needed
if (size >= items.length) {
items = grow(items);
}
while (i < size) {
if (items[i].compareTo(s) > 0) {
break;
}
if (items[i].equals(s)) {
return;
}
i++;
}
items[i] = s;
size++;
}
@Override
public void show()
{
for(Word s : items)
{
System.out.println(s);
}
}
public Word[] grow(Word[] a) {
Word[] newA = new Word[a.length + 5];
System.arraycopy(a, 0, newA, 0, a.length);
return newA;
}
}