我正在尝试创建一些代码来读取文本文件中的信息。例如,Bus_Routes.txt将包含Route_A.txt 283,284,从该文件中打开Route_A.txt并包含2列,其中列出了坐标为Latitude Longitude的列。这个我写得很好。
由此,我试图让id 283的设备按照顺序沿坐标移动。有人建议我使用HashMap。因此,我的计划是为Route_A.txt的坐标创建一个Route_A.txt,其中一个列用于Latitude,另一个列用于Longitude。由此,我将创建另一个HashMap,它将包含包含坐标的device_id和HashMap,device_id将遍历HashMap的每一步。
这是可以做到的,还是我完全看错了?如果有人有任何建议,他们会非常感激的。
发布于 2014-02-21 10:23:19
不要将坐标存储在HashMap中。很难用键(纬度?)存储多个坐标。是一样的。例如,一个简单的Map<Integer, Integer>将只保存一个纬度的经度值,这将阻止您的路由在同一条经线上有多个目的地。
我宁愿使用:
List<Coord>Coord是你的lat/long对。List将保持秩序,而普通的HashMap则不会。
请注意,我有意将lat/long对封装为特定对象。您可以将它存储为整数的元组,但我更希望有一个特定的对象来强制输入,允许添加功能等等。正如其他地方所指出的,Java是一种面向对象语言,您不应该回避创建类来表示这些概念(创建类似于Map<String,List<Integer,Integer>>的东西时就应该这样做)
发布于 2014-02-21 10:25:00
HashMap是一种数据结构,它允许您将值与键相关联,并允许(给定一个键)在恒定时间内返回值(例如,不需要像对列表或数组那样循环)。
因此,如果您的usecase需要这样的功能,请使用此结构。将设备存储在地图中,其中设备ID是关键,听起来是个好主意。
另一方面,如果希望数据结构包含字段(如纬度、经度),则创建一个类。Java是一种面向对象语言。你应该创建你自己的类。如果您想要一个坐标列表,那么您应该使用List<Coordinate>,而不是HashMap。
https://stackoverflow.com/questions/21931488
复制相似问题