【问题标题】:Memory Based Data Storage基于内存的数据存储
【发布时间】:2018-09-15 18:17:33
【问题描述】:

我需要加载 Account 类的实例

class Account {
  private String firstName;
  private String lastName;
  private String email;
  ...
}

到内存以便快速访问。我可以使用 Java 集合类来存储数据。我还需要搜索数据。由于电子邮件地址需要是唯一的,我正在考虑使用带有电子邮件地址的地图作为键。如果需要搜索名字和姓氏,这种方法将无济于事。我可以使用过滤器来搜索名字和姓氏。

有更好的方法吗?

【问题讨论】:

标签: java search collections


【解决方案1】:

您可以维护多个不同的 Java 集合或使用具有更好搜索功能的 in-memory databasesJava object databases

但是,另请参阅Coollection。很有趣。

【讨论】:

  • 感谢您的意见。我可以看到为此目的使用几个不同的 Java 集合类的原因。但是,这对于包括搜索在内的只读操作更好。
【解决方案2】:

如果你想搜索东西,你想使用像 Data Store 这样的索引集合: https://github.com/jparams/data-store

例子:

Store<Account> store = new MemoryStore<>() ;
store.add(new Account("Ed", "Smith", "ed.smith@gmail.com"));
store.add(new Account("Fred", "Smith", "fred.johnson@hotmail.com"));
store.add(new Account("Freda", "Pinto", null));
store.index("firstName", Account::getFirstName);
store.index("lastName", Account::getLastName);
Account ed = store.getFirst("firstName", "Ed");
Account smiths = store.get("lastName", "Smith");

使用数据存储,您可以创建不区分大小写的索引和各种类型。如果您要进行大量查找,那么您肯定想使用这样的库。

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2021-06-30
    • 2011-09-19
    相关资源
    最近更新 更多