2012-01-20 10 views
2

私は、緯度、ロング、ロケーション名のテーブルを持っています。 私は現在の場所から最も近い距離を計算し、1人のarraylistでその距離を加えた後、昇順にソートしました。 他のarraylistに名前を追加しました。 他のリストからの距離を使って順番に名前を設定する必要があります。 どうすればいいですか?別のarraylistを使用してarraylistをソートする

答えて

0

距離をキーに、名前を値としてTreeMapを直接構成しないのはなぜですか。そうすれば、彼らはいつも距離でソートされます。

+1

distanceをキーにしたTreeMapは良いアイデアですが、同じ距離のエントリが5つある場合はどうなりますか? – Kent

+0

うーん、良い点。 :) – Tudor

1

は、あなたの距離はそのテーブルの緯度、経度で計算されますか?なぜ地図データ構造を使用しないのですか?

それはおそらくあなたが緯度、経度、およびロケーション名が含まれているいくつかのクラスを有する

+0

もし私がマップに値を入れたら、再びリストに入れる必要があります – Vamshi

+0

私はそれらの緯度、経度を使って距離を計算し、最寄りの距離を使ってリストに名前を追加する必要があります – Vamshi

0

あなた対位置距離を提供します。このクラスのオブジェクトをTreeSetに入れることができます。ここでは、コンパレータがコンストラクタ引数として現在の場所を持ち、比較を行う距離を計算します。

3

あなたはあまりにも広範囲に配列を使用していると思います。 2つ以上の関連データがある場合は、各部分を別々の配列に配置しないでください。その代わりに、関連するすべてのデータ(緯度、経度、距離、名前)を保持するクラスを作成し、このクラスのインスタンスを保持する配列(またはSortedListなどのニーズに合った他のコレクション)を作成します。このクラスは距離を距離として使用してComparableを実装することができるため、距離による並べ替えが可能です。

+0

gr8 ans ...これは私が似たような状況で行ったことです! – aProgrammer

-1

Arrays.sort()を使用してください。あなたは別の配列の現在のものからそれぞれの距離を加えなければならないことさえできません。コンパレータを正しく実装するだけです。

ArrayListtoArray()を実行した後でこれを使用してください。

+0

質問のポイントは、距離の配列(ソートされている)に名前の配列を関連付ける方法でした。 –

関連する問題