如何优化查找特定对象?

时间:2016-03-25 16:52:50

标签: java optimization javafx

我正在为我的IT课程做一些项目,即使我已经完成了这项任务,我也想知道如何改进现实生活中的代码。我们给了程序:

  1. 从文件(具有字段ID FIRSTNAME LASTNAME的数据库)中读取。
  2. 创建Person对象。
  3. Person添加到personArray
  4. personArray添加到我的
    private ObservableList<AccountOwner> data = FXCollections.observableArrayList();
  5. 这个流程背后的逻辑如下:我想存储一个数组,这样我就可以直接访问Person的对象,这样我就可以在{{1}之间进行双向数据绑定和我的对象。

    现在,重要的部分是找到一些这些对象。假设我想找到一个具有特定ID的TableView对象,所以我可以更新它的一些属性。现在,我正在做以下事情:

    Person

    我的小型数据库(20个条目)没什么问题。

    我的问题是:如何改善这种流程,以便在数据库可以组成超过10,000个条目的情况下,在现实生活中更有效率?迭代 for (Person person:this.personArray) { if (person.getId().equals(someId)){ person.addBirthday(someDate); } } 并找到合适的对象会花费越来越多的时间。有没有其他方法可以在我的应用程序中查找特定对象?

    对于感兴趣的人 - 我使用JavaFX及其表。

1 个答案:

答案 0 :(得分:2)

FXCollections还提供了可观察的Map

你可以用他们的ID映射你的Person,并检索它们,这可能比你的例子中的迭代表现得更好。

也就是说,如果Object方法equalshashCode被有效地(并且正确地)覆盖在您用作地图关键字的对象中。

然后您使用HashMap支持ObservableMap

对于较大的存储库,您可以查看专用的内存数据库或持久的高性能数据库,但与JavaFX的集成需要更多的工作量。

  • API here
  • 有关JavaFX集合的官方教程here