2017-02-06 17 views
-1

私はCoordinatesクラスを持っており、私はCoordinatesオブジェクトを匹敵させたいと思っています。Java Override CompareToメソッド

public class Coordinates implements Comparable<Coordinates> { 

private int row; 
private int column; 

考えられるのは、CoordinatesオブジェクトをPriorityQueueに挿入して並べ替えることです。

@Override 
public int compareTo(Coordinates o) { 
    if (row < o.row) { 
     return row; 
    } 
    if (row > o.row) { 
     return o.row; 
    } 
    if (row == o.row) { 
     if (column < o.column) { 
      return column; 
     } 
     if (column > o.column) { 
      return o.column; 
     } 
    } 
// return 0; 
} 

これは私の試みですが、正確に何を返すことが期待されているのか、それを返す方法はわかりません。最小の座標を最優先にしたい。そして、私はまだ、戻り値を期待書い機能 - コメント行

+3

どのような意味でもっとも小さいですか?同様に '(1,2)と'(2、1) 'を比べるべきでしょうか? –

+0

各オブジェクトの '(0、0)'からの距離を計算し、それを使って比較することができます。 – ByeBye

+0

1,5よりも優先度が高く、1,0より優先度が1,3よりも高いようにしたい –

答えて

1

を願っています、のif-elseたbrachを修正します1,5よりも優先順位が高く、1,0よりも優先度が1,330より高い優先度を持つようになりました

実際には逆の並べ替えが必要です。ただし、プライオリティキューでは最も低い値が最初に配置されるため、自然順序によって最も低い値が最初に表示されます。

あなたがInteger.compare

@Override 
public int compareTo(Coordinates o) { 
    int cmp = Integer.compare(row, o.row); 
    if (cmp == 0) 
     cmp = Integer.compare(column, o.column); 
    return cmp; 
} 

に注意を、これを簡素化することができより大きい

@Override 
public int compareTo(Coordinates o) { 
    if (row < o.row) return -1; 
    if (row > o.row) return +1; 

    if (column < o.column) return -1; 
    if (column > o.column) return +1; 
    return 0; 
} 

0未満と>のため< 0を返すようにしたい:あなたが想定した場合、行と列は、非ですあなたは書くことができます。

@Override 
public int compareTo(Coordinates o) { 
    int cmp = row - o.row; 
    if (cmp == 0) 
     cmp = column - o.column; 
    return cmp; 
} 
+2

[コメントは、 /chat.stackoverflow.com/rooms/135053/discussion-on-answer-by-peter-lawrey-java-override-compareto-method)。 –

-2
if (row < o.row) { 
    return row; 
} 
else if (row > o.row) { 
    return o.row; 
} 
else 
{ 
    if(row == o.row) 
    { 

     if (column < o.column) { 
      return column; 
     } 
     if (column > o.column) { 
      return o.column; 
     } 
    } 
} 

は、私は0,5をしたいあなたは

リターン欠落している構文エラーを取得している
+0

それは解決策ではありません... – ByeBye

+0

そして、私が書いた関数は戻り値 - コメント行を期待しています – ShayHaned

+0

私はあなたがその1つで冗談を言う必要があることを意味します:) – ShayHaned

関連する問題