TokenDoubleCounters (カスタム オブジェクト) の ArrayList を並べ替えようとしています。TokenDoubleCounter では、次のように equals と compareTo を実装しました。
public class TokenDoubleCounter implements Comparable<TokenDoubleCounter> {
private String word;
private double count;
public boolean equals(Object o) {
if (o instanceof TokenDoubleCounter) {
TokenDoubleCounter other = (TokenDoubleCounter) o;
if (other.word.equals(this.word) && other.count == this.count)
return true;
}
return false;
}
public int compareTo(TokenDoubleCounter other) {
double result = this.count - other.getCount();
if (result > 0.0)
return 1;
if (result < 0.0)
return -1;
return this.word.compareTo(other.getWord());
}
//rest of class omitted
}
これらのオブジェクトは、次の関数呼び出しで作成およびソートされます。
public List<TokenDoubleCounter> chiSquareValueAll(int cl, int cl2) {
List<TokenDoubleCounter> list = new ArrayList<TokenDoubleCounter>();
for (String word : map.keySet()) {
//chiSquareValue2 returns a double
list.add(new TokenDoubleCounter(word, chiSquareValue2(cl,cl2,word)));
}
Collections.sort(list, Collections.reverseOrder());
return list;
}
最後に、これらの結果を反復処理して、これらをファイルに書き込みます。
public boolean printChiSquare(PrintWriter out, int cl, int cl2) {
for (TokenDoubleCounter tdc : this.chiSquareValueAll(cl,cl2)) {
if (tdc.getCount() > 2.7) {
//getWord() returns string value "word" and getCount() returns double value "count"
out.write(tdc.getWord() + "," + tdc.getCount() + "\n");
}
}
return true;
}
結果は、私が要求した順序ではないように思われるため、私にとってはやや驚くべきものでした。
word,8.937254901960785
word,8.937254901960785
word,8.937254901960785
word,5.460792811839323
word,4.746170542635659
word,4.382692307692308
word,4.382692307692308
word,4.382692307692308
word,4.382692307692308
word,4.382692307692308
word,4.382692307692308
word,4.382692307692308
word,8.937254901960785
word,8.937254901960785
word,8.937254901960785
word,8.937254901960785
word, 8.937254901960785
ワード、8.937254901960785
ワード、8.937254901960785
ワード、5.460792811839323
ワード、4.746170542635659
ワード、4.746170542635659
単語,4.746170542635659
単語,4.382692307692308
...
私は何が欠けていますか?また、追加の詳細が必要な場合はお知らせください。
また、すべてのエントリ「単語」は実際にはさまざまな長さの文字列などであることを付け加える必要がありますが、それは関係ないと思います。
助けてくれてありがとう。