2014-02-21 54 views
1

我正在尝试创建一些代码来读取文本文件中的信息。例如Bus_Routes.txt将包含Route_A.txt 283,284,并从中打开文件Route_A.txt并且它包含2列,列出坐标为Latitude Longitude。这我写得很好。要HashMap或不要HashMap?

从这我试图让id为283的设备顺序沿坐标传播。我被推荐使用一个HashMap。所以我的计划是为Route_A.txt的坐标创建一个HashMap,其中一列为Latitude,另一列为Longitude。从那里我将创建另一个HashMap,它将包含device_id和包含坐标的HashMap,device_id将遍历HashMap的每一步。

可以这样做,还是我完全看错了地方? 如果有人有任何建议,他们将不胜感激

回答

2

不要将您的坐标存储在HashMap。用键(纬度?)存储多个坐标是相同的。例如一个简单的Map<Integer, Integer>只能保存纬度的一个经度值,并且这会阻止沿同一经度线有多个目的地的路线。

我宁愿使用:

List<Coord> 

其中Coord是你的纬度/经度对。 List将保持顺序,而正常的HashMap不会。

请注意,我故意将lat/long对封装为特定对象。你可以将它作为一个整数的元组来存储,但我宁愿一个特定的对象来强制输入,允许添加功能等。正如其他地方所指出的,Java是一种OO语言,你不应该害怕创建类来表示这些概念一个标志,你应该这样做,当你创建类似Map<String,List<Integer,Integer>>

+0

嘿谢谢你的帮助。所以你建议我创建一个单独的类来获取坐标,它将包含getters和setters(对吧?),如果你还没有收集到,我对这个很陌生!从那我调用getSet类,并使'列表'? – Dan

+0

我希望Coord能够包含你的经纬度(可能还有你的setter/getters--也许你不需要setter,因为你只需在构造函数中设置成员?) –

2

一个HashMap是一个数据结构,让你把一个值与一个关联,并允许,给定一个关键,在固定时间(例如,不需要循环,因为您必须使用列表或数组)。

因此,如果您的用例需要这样的功能,请使用此结构。将设备存储在地图中,其中设备ID是关键字,听起来像是一个好主意。

另一方面,如果您希望数据结构包含字段(如纬度,经度),则创建一个类。 Java是OO语言。你应该创建你自己的类。如果你想要一个坐标列表,那么你应该使用一个List<Coordinate>,而不是一个HashMap。