0

String の ArrayList が 2 つあり、両方に含まれる単語をカウントしたいと考えています。

各 ArrayList にはキーフレーズが含まれています。たとえば、次のようないくつかの単語の文字列です。

アン・アルトラ・リセッション

ストラーダルンガ

バラク・オバマ大統領

[...]

この2つの方法で試しましたが、NullPointerExceptionが発生します

 public boolean containsKeyword(String testKeyword, ArrayList<String> list) 
{ return list.contains(testKeyword);
}

public int compareKeywords(Quotidiano quotidiano){
    int sameKeywords=0;
    for(int i=0; i<this.Keywords.size(); i++){
            if(this.containsKeyword(this.getKeyword(i), quotidiano.Keywords))
             sameKeywords++;
          }

    return sameKeywords;
}

答えてくれてありがとう!


[編集]

交差点を使用して機能しました、ありがとう!しかし、それは単一の単語を比較する方が良いでしょう.

たとえば、キーフレーズがある場合

「イタリアの広がり」、

"300未満に広がる",

交差点はnullだと思いますが、代わりに「広がり」を返したいと思います。どうすればいいですか?

4

3 に答える 3

1

Apache ListUtils Intersectionを使用する

public static java.util.List intersection(java.util.List list1,
                                      java.util.List list2)

PS: これはスローjava.lang.NullPointerExceptionします - いずれかのリストが null の場合

于 2012-11-03T11:32:52.410 に答える
1

未知のソースから入力を取得するときはいつでも、null をチェックする必要があります。入力がOKであることを数えるべきではありません。

public boolean containsKeyword(String testKeyword, ArrayList<String> list) 
{ 
    return (list != null) ? list.contains(testKeyword) : false;
}

public int compareKeywords(Quotidiano quotidiano){
    if(quotidiano == null || this.Keywords == null) return 0;
    int sameKeywords=0;
     for(int i=0; i<this.Keywords.size(); i++){
        if(this.containsKeyword(this.getKeyword(i), quotidiano.Keywords))
         sameKeywords++;
    }

    return sameKeywords;
}

this.Keyword のチェックはオプションです。それはあなたのコードであり、null とは常に異なる必要があることを認識しているためです。

于 2012-11-03T11:35:55.667 に答える
0

NullPointerExceptionオブジェクトのメンバーを使用していて、そのオブジェクトがまだ初期化されていない場合に発生します。両方のリストが初期化されていて、null でないことを確認してください。

于 2012-11-03T11:38:38.333 に答える