本当に可変が必要GeoPoint
ですか?GeoPointの連続したインスタンスを作成することが、パフォーマンスの問題になると確信していますか?Nateが提案するように、緯度と経度をプリミティブ変数に保持し、必要な場合にのみGeoPointに変換できますか、それともそれぞれをGeoPointにする必要がありますか?
変更可能なGeoPointが必要であることが確実な場合は、作成できます。GeoPointクラスはそうではないfinal
ので、拡張することができます。HashMap
ただし、注意してください。可変オブジェクトを、、、HashSet
またはその他のハッシュベースのコレクションに入れると、驚くべき(そしてバグが多い)結果になります。
明示的に自分で渡さなくても、そのようなコレクションに入れるAPIに誤って渡さないように注意してください。
import com.google.android.maps.GeoPoint;
public class MutableGeoPoint extends GeoPoint {
private int latitudeE6, longitudeE6;
public MutableGeoPoint(int latitudeE6, int longitudeE6) {
super(0, 0); // the values in the superclass are moot
this.latitudeE6 = latitudeE6;
this.longitudeE6 = longitudeE6;
}
@Override
public int getLatitudeE6() {
return latitudeE6;
}
@Override
public int getLongitudeE6() {
return longitudeE6;
}
public void setLatitudeE6(int value) {
this.latitudeE6 = value;
}
public void setLongitudeE6(int value) {
this.longitudeE6 = value;
}
@Override
public int hashCode() {
return 29*latitudeE6 + longitudeE6;
}
@Override
public String toString() {
return latitudeE6 + "," + longitudeE6;
}
}
hashCode()メソッドをGoogleのGeoPointクラスと同じになるように変更するように編集されました。
(GeoPointとMutableGeoPointは、等しいと等しいとは比較されません。そのようなことを心配すると、すぐに収穫逓減のポイントに達します。)