选择哪种数据结构?

时间:2012-05-06 11:24:44

标签: java data-structures guava

需要选择最佳数据结构,以便快速处理位置和区域列表。

地点(城市)有简单的POJO:

public class Location {

    private String name;
    private int post; //id

对于地区(地区):

public class Region {
    private String name;
    private int id;
    private List<Location> cities;

最后我有ListRegion个对象。 我需要做什么:

  1. 按帖子(ID)
  2. 搜索地点名称
  3. 按名称发布搜索位置。 注意:名称不是唯一的,所以我需要在名称相同的情况下更喜欢某个具体位置而不是另一个
  4. 问题是我应该使用什么数据结构? 我在想TreeMap包含来自所有区域的所有位置。所以我可以通过Name(字符串)快速获取位置。 对于p 1.我有解决方案:位置的帖子包含Region的id。所以如果Region有id = 1,那么它的Locations帖子将是10001,10002等。 或者我可能需要选择Guava引入的一些新的Collections类型,因为它已经出现在项目中了?

2 个答案:

答案 0 :(得分:2)

我建议您创建课程LocationRepository

class LocationRepository {
    Location getById(int id);
    Collection<Location> getByName(String id);
}

此存储库应该包含2个集合:Map(位置的HashMap或TreeMap:Map<Integer, Location>其中key是位置ID。第二个映射应该是来自Guava的[MulitMap][1],它在名称和集合之间进行映射匹配的位置。

答案 1 :(得分:2)

将所有位置添加到两个HashMap

  1. 一个包含所有位置,其中位置名称为键,位置列表为值。
  2. 其他以id为键,位置为值?
  3. 最好在一个类中隐藏两个哈希映射,为您执行查找。

    或者我错过了什么?