我收到了 300 个 json
对象的列表,这些对象将在内存中缓存一天。在应用程序执行期间,我想通过对象的属性查询对象。
示例:
@XmlRootElement(name = "persons")
@XmlAccessorType(XmlAccessType.FIELD)
class PersonsDTO {
private List<PersonDTO> persons;
public static class PersonDTO {
private String name;
private int age;
//lots of more attributes
private Address address;
}
}
在这里,我想运行类似于数据库的查询,例如:
findByname("john doe");
findByAgeBetween(10, 18);
问题:如何最好地为这些“查询”查找准备数据?为每个查询函数创建一个 HashMap
,然后我就可以返回预先计算的结果?
或者是否有任何我可以使用的“类似数据库”的内存系统,并且可以像真实数据库一样进行查询?
最佳答案
除非您有特定的性能要求,否则我只会暴力破解它。扫描 300 个条目的时间应少于 0.1 毫秒。
这将允许您使用内置的流 API。
private List<PersonDTO> persons;
public List<PersonDTO> findBy(Predicate<PersionDTO> test) {
return persons.stream().filter(test).collect(Collectors.toList());
}
// findByName
List<PersonDTO> david = findBy(p -> p.getName().startsWith("David "));
// find by age
List<PersonDTO> youngAdult= findBy(p -> p.getAge() >= 18 && p.getAge() <= 30);
关于java - 如何通过属性查询内存对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343263/