なぜ私は、この関数は要素を検出していません含まれていますか?

Ganlas:

私は、テキストの大きなブロックを読み込み、各ユニークワードと、それはテキストで思い付いた回数を保存しようとしています。これを行うには、私は、Wordクラスの配列リストを作りました。Wordのクラスは、単にそれが思いついた単語や回数を格納します。私はすでに前の単語を処理しているかどうかを確認するために.contains()関数を使用するのと同じ単語の重複を避けるために、いくつかの理由で、.contains()が機能していません。

class Main 
{
  public static void main(String[] args) throws FileNotFoundException 
  {
    File file = new File("poe.text");
    Scanner f = new Scanner(file);
    ArrayList<Word> words = new ArrayList<Word>();
    int total = 0;

    while(f.hasNext())
    {
      Word temp = new Word(f.next().toLowerCase().trim());
      //System.out.println("temp is "+temp.getWord());
      total++;
      if(words.contains(temp))
      {
        words.get(words.indexOf(temp)).up();
      } else
      {
        words.add(temp);
      }
    }

    for(Word w:words)
    {
      System.out.println(w.toString());
    }
  }
}

if文は真と評価されませんとの言葉は、それが既に存在していてもArrayListにすべての単語が追加されます。

Shubham:

リストのJavadocには、含まれている方法は、2つのオブジェクトが同じであるかどうかを評価するためのequals()メソッドを使用しています。あなたは、あなたの言葉のクラス内のequalsとhashCodeを実装していますか?

Javadocのhttp://docs.oracle.com/javase/7/docs/api/java/util/List.html#contains%28java.lang.Object%29

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=374961&siteId=1