如果以后要按多个属性搜索对象,该如何存储对象?

时间:2018-08-22 16:22:58

标签: java data-structures

我想用Java编写一个简单的项目,以便跟踪自己观看/拥有的电视节目,电影,书籍等。 从API(themovieDB,Google图书)中搜索和检索元数据已在工作。

我如何将其中一些元数据与用户输入(例如进度或等级)一起存储?

我打算以表格(example)的形式显示数据。用户还应该能够搜索具有多个属性的本地数据。有没有简单的方法可以做到这一点?我已经考虑过数据库,因为这似乎是最简单的解决方案。

有什么建议吗? 预先感谢!

3 个答案:

答案 0 :(得分:0)

您可以将轻量级数据库用作H2HSQLDBSqlLite。这些数据库可以嵌入Java应用程序本身,不需要额外的服务器。
如果数据较少,还可以使用任何XMLParser或JsonParser(例如Gson())将其保存为XML或Json。

您的数据库表将具有从API以及用户输入中获取的各种属性。您可以在这些数据库的顶部编写查询以获取并显示各种结果。

答案 1 :(得分:0)

有很多方法可以完成此操作,但是正如另一个用户所发布的那样,数据库是显而易见的选择。

但是,如果您要制作一个程序以供学习或简单使用以供个人使用,则还可以使用多维字符串数组来保存程序的名称以及任何其他元数据字段和将数组像Excel中的表格一样对待。这不是最好的方法,但是您可以通过非常简单的代码来摆脱它。要搜索,您只需要遍历数组元素并检查程序名称(即movieArray[x][0]是否与搜索字符串匹配。找到后,您可以执行操作或编辑与该电影有关的其他数组索引。 / p>

要获得更多的通用性,您可以创建一个类来保存电影信息,并使用字段来保存任何元数据。这样做的好处是元数据字段可以是不同的类型,而不必遵循数组类型,并且可以将它们打包在类的实例中。如果您要从API获取信息,则可以从API响应中更新或创建类。这些对象可以存储在ArrayList中,并通过检查特定值(即

)的循环进行搜索。
for (Movie M : movieArrayList){
   if(m.getTitle().equals("Arrival")){
      return m;
  }
}

当然,对于大规模而言,数据库将是最佳答案,但这全取决于它的真正用途以及在现实世界中的需求。

答案 2 :(得分:0)

要么将所有内容都写入文件,要么将所有内容存储在数据库中。这取决于您想要什么。

如果您选择将所有内容都写入文件,则必须实现写入和读取以适合您的需要。您还必须自己处理读/写错误和性能问题。

如果选择数据库,则只需实现高级读写方法,即格式化数据并将其存储在适当表上的方法。实际的读写已经实现并针对性能进行了优化。

总体而言,数据库通常是明智的选择。虽然,要小心选择哪一个。一些类型可能更适合阅读,而其他类型则更适合书写。给定问题的领域,您应该仔细评估最好的方法。