1

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

位置(城市)有简单的 POJO:

public class Location {

    private String name;
    private int post; //id

对于地区(地区):

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

最后我有List对象Region。我需要做什么:

  1. 按帖子(id)搜索位置名称
  2. 按名称搜索位置帖子。注意:名称不是唯一的,因此在名称相同的情况下,我需要更喜欢一些具体的位置

问题是我应该使用什么数据结构?我正在考虑包含来自所有地区的所有位置的 TreeMap。所以我可以通过名称(字符串)快速获取位置。对于 p 1。我有解决方案:位置的帖子包含区域的 id。所以如果 Region 的 id=1,那么它的 Locations 帖子将是 10001、10002 等。或者我可能需要选择 Guava 引入的一些新的 Collections 类型,因为它已经存在于项目中?

4

2 回答 2

2

我建议你创建类LocationRepository

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

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

于 2012-05-06T11:34:42.167 回答
2

将所有位置添加到两个HashMaps:

  1. 一个以位置名称为键,位置列表为值的所有位置。
  2. 其他以 id 作为键,以 Location 作为值?

最好将两个哈希图隐藏在一个类中为您进行查找。

还是我错过了什么?

于 2012-05-06T11:38:03.413 回答