MyClassのそのような:Comparatorクラスをdouble型のオブジェクトのデータタグに使用するにはどうすればよいですか?
class MyClass
{
double distance;
String name;
public void MyClass()
{}
}
そして、私のベクトルは、およそ次のとおりです。私は距離データタグによって私のベクトルの要素を注文したい
MyVector<MyClass>myVector = new MyVector<MyClass>();
MyVector.add(myClass1);
MyVector.add(myClass2);
MyVector.add(myClass3);
//Etc....
。 私はコンパイラクラスを使用しようとしましたが、失敗しました。誰かがこのケースのために動作するコンパレータクラスを実装できますか?
使用しようとしましたが失敗したコンパレータクラスを表示できますか? –
public int compare(MyClass my1、MyClass m2) \t { \t return(int)(m1.distance - m2.tavolsag); \t} これはいくつかの並べ替えを行いますが、小数点以下のように失敗します。 1.71; 2.32; 3.67; 3.52; 3.98; 4.01 .. ETC –
人々がコンパイラでよく使う「ショートカット」を減算するのは、整数だけでしか動作しません。私は距離とtavolsagは浮動小数点数であり、それらを減算すると浮動小数点数を返すと思います。 floatをintにキャストすると、小数部が削除され、1.5〜1.6のように負の数値(-0.1)が返されます。これは、最初の引数が2番目のLESSよりも小さいことを意味します)は、コンパレータが第1引数が第2引数に等しいと言っていることを意味します)。この場合、ショートカットを使用しないことをお勧めします。コンパレータを以下の回答の1つとして実装してください。 –