基于内存的数据存储

时间:2018-04-05 20:01:30

标签: java search collections

我需要加载Account类的实例

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

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

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

但是,另见Java object databases。这很有趣。

答案 1 :(得分:0)

如果要搜索内容,则需要使用像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");

使用数据存储,您可以创建不区分大小写的索引和所有排序。如果您正在进行大量查找,那么您肯定希望使用这样的库。