存储经纬度数值

4

我有5000多个船舶坐标,它们是经度和纬度坐标。我想知道为每艘船存储这些坐标的最佳方式是什么。每艘船将拥有未知数量的坐标。
最初,我考虑使用类似于双重2D数组的方式:

double [][] array = new double[][]; 

但是我不知道我需要多大的尺寸。
我不知道是否可以使用HashMap,因为没有真正的“键”,我在考虑使用ArrayListList,但我不确定它的实现方式以及是否是最可行的选项。


4
首先创建一个包含纬度和经度的Coordinate类。如果需要一个可变长度的坐标列表,则使用List<Coordinate>。 - JB Nizet
真正的问题是什么?它是船只与其纬度/经度对列表的地图。你实际上需要将其存储在内存中吗? - Dave Newton
这是一个真实的问题还是学校/学习问题?如果这是一个真实的问题,我建议您从设计数据库表开始。 - ControlAltDel
@ControlAltDel 谁在这里谈论数据库了?也许他没有使用数据库。你在无中生有地做出假设。 - m0skit0
1
你应该认真考虑使用 BigDecimal 来表示坐标,而不是使用 doubles/floats。 - Powerlord
显示剩余3条评论
4个回答

6
创建一个ShipCoordinates类。
public class ShipCoordinates {
    public final double latitude;
    public final double longitude;

    public ShipCoordinates(double lat, double lon) {
        latitude = lat;
        longitude = lon;
    }
}

将这些对象存储到一个列表中。
List<ShipCoordinates> shipCoordinates = new ArrayList<>();
// Example of valid ship coordinates off the coast of California :-)
shipCoordinates.add(new ShipCoordinates(36.385913, -127.441406));

4
我认为船只在坐标 (90, 180) 的位置是非法的:那里被完全覆盖着冰:) - Alex Salauyou

3
也许哈希表并不是那么糟糕。考虑一下这个?
static class Coords {
 ...
}

Map<Coords, String> map = new HashMap<Coords, String>();
map.put(new Coords(1700, 1272), "Some_ship");

1
需要为“Coords”实现“hashCode”和“equals”...除非OP真正澄清了地图的用途,否则看起来不是一个好主意。 - m0skit0

0
class Ship {
    ArrayList<Coordinate> coordinates;
}

ArrayList<Ship> ships;

0

没有数据文件片段进行查看,很难回答这个问题。ArrayList 似乎是理想的选择,并创建带有坐标的船只对象。

如果您想使用 hashmap,我猜最好的键是船只。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接