java - 如何通过属性查询内存对象?

标签 java

我收到了 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/

相关文章:

java - 关于 BroadLeaf Commerce 管理中的 GWT

java - java中是否可以根据LocalDateTime打印某个字符串?

java - 在 kafka 流中使用 Redis 池是否安全?

java - JPA 中 @ManytoOne 中的复合主键与链接类

来自 X-Y 坐标图的 Java 字符串

java - 将jsp语句转换为html

java - 如何将对象添加到 vector 中?

java - 使用 Java 为操作系统设计我的浏览器

java - 拉动后 eclipse mercurial 冲突 : how to pick remote file

java - Paint() 是如何工作的