电影院双向搜索能力的数据结构

问题描述 投票:-3回答:1

我正在尝试设计一个在线电影票预订系统,用户可以在该系统中搜索某个城市的电影/影院,然后预订电影。假设他搜索了一部电影,我需要将所有影院的电影以及该电影的播放时间一起归还。同样地,如果他搜索剧院,我需要将剧院中的所有电影与节目时间一起返回剧院。我无法弄清楚这是用户正在搜索的电影或影院。我应该使用哪种数据结构进行有效搜索?这是我的想法,但它似乎是一种蛮力的方法。这是我的班级(部分结构)

public class Theater {
  String theaterName;
  ArrayList<Movies> movies;
}

假设我将影院存储为arraylist,我最终会解析这些影院并与影院名称进行字符串比较,然后再与影片名称进行比较。

编辑:为了避免混淆,问题不是如何/在何处保留数据,而是用于加载数据的数据结构,以便我可以围绕它进行有效的搜索操作

algorithm design-patterns data-structures
1个回答
2
投票

您可以在启动时将数据加载到内存中,并有两个哈希映射:一个是HashMap<TheaterId, ArrayList<MovieId>>,另一个是HashMap<MovieId, ArrayList<TheaterId>>。这样你就可以看到任何一种方式。此方法的问题是您必须定期检查数据库以获取更新,或者在更新发生时以某种方式让数据库通知您,以便您可以更新数据结构。但是你必须担心并发性(在用户查询数据时更新数据),并且事情变得混乱匆忙。

这就是数据库的用途。他们已经知道如何处理并发更新和查询,如果正确设置索引,则可以按电影或影院进行搜索。如果您使用的是专用数据库服务器,则数据库可能会将大部分索引和数据缓存在内存中,因此搜索速度可能非常快。

如果您认为“数据库用于存储数据”,您需要学习很多东西。数据库用于存储,转换,操作和检索数据。还有一些东西也可能。

© www.soinside.com 2019 - 2024. All rights reserved.