私はこのフォーラムや他のフォーラムでこれについて多くを読んだことがありますが、まだ具体的な答えを得ることはできません。とにかく私はこのようにそれを行うことを決めた。ここではJava、Sort二重配列とそのインデックス
は、文字列と整数を保持するクラスです:
public class Tuple{
private String token;
private int docID;
public Tuple(String token, int docID) {
this.token = token;
this.docID = docID;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public int getDocID() {
return docID;
}
public void setDocID(int docID) {
this.docID = docID;
}
}
そして、私はこれらのタプルにprivate ArrayList<Tuple> temps = new ArrayList<>();
を置くために、配列リストを作成しますそして、私はこのような配列リストを読み込む:
012:for (int i = 0; i < numberOfDocs; i++)
{
Tuple cat = new Tuple(Double.toString(vect[i]),i);
temps.add(cat);
}
結局、私はこのような配列をソートしています
public void sortTmp()
{
Collections.sort(temps, new Comparator<Tuple>()
{
@Override
public int compare(Tuple tr2, Tuple tr1)
{
return tr2.getToken().compareTo(tr1.getToken());
}
});
}
javaとdoubleには問題があり、私はダブルマトリックスを直接使うことができないので、私はDouble.toString()
をしなければなりません。結果はソートされますが、ダブルからの文字列の計算は倍精度ソートの点で非常に正確ではないため、完全には正しくありません。
アイデア?
あなたが望むものはおそらくではありません。なぜダブルスを使用できないのですか?またはそれより優れている:あなたができないと思うものは何ですか? "javaとdoubleにはいくつかの問題があります" - 主にJavaではなくdoubleに問題がある開発者です。 – Fildor
この特定の行 'return tr2.getToken()。compareTo(tr1.getToken());'は、 'string'型から' double'型にすべて変更すると間違っています。私のIDEによれば、「ダブルは参照解除できません。」 – Javac
はい、*その行をダブルに変更するように変更してください。 compareToを使用する必要がある場合は、Doubleラッパーを使用できます。 – Fildor