私は Java の初心者で、 Comparable インターフェースの compareTo メソッドをオーバーライドするのに問題があります。私のコードは、文字列を int に関連付ける HashMap を作成します。ArrayList キーの文字列がアルファベット順ではなく HashMap 値に基づいてソートされるように、compareTo をオーバーライドしたいと思います。ただし、この実装では、文字列は依然としてアルファベット順にソートされています。
ああ、明確にするために、nameWeight は String,Integer ペアの HashMap です。
何か案は?
List<String> keys = new ArrayList<String>(nameWeight.keySet());
System.out.println(keys);
Collections.sort(keys);
public int compareTo(String that){
int gtr = 1;
int less = -1;
int eql = 0;
System.out.print(this);
System.out.print(that);
if(that=="JOHN")
return less;
int valThis = nameWeight.get(this);
int valThat = nameWeight.get(that);
if(valThis==valThat)
return eql;
if(valThis>valThat)
return gtr;
if(valThis<valThat)
return less;
return gtr;
}