Java有类似数据库的结构吗?
我一直在编写一种“排序和聚合”方法,使这个~100MB的数据集能够高效地搜索,但代码有点长 对象是简单的类,如Java有类似数据库的结构吗?,java,Java,我一直在编写一种“排序和聚合”方法,使这个~100MB的数据集能够高效地搜索,但代码有点长 对象是简单的类,如 class item { public int type = 1; public int damage = 4; } 我所做的就是创建一个类,在这个类中我可以说items.type(1).damage(4).getItem() Java有没有类似的类来将对象转换为可搜索的对象 我一直在研究Java集合和实体,我写的是一个巨大的ArrayList,有几个HashMapJ
class item {
public int type = 1;
public int damage = 4;
}
我所做的就是创建一个类,在这个类中我可以说items.type(1).damage(4).getItem()代码>
Java有没有类似的类来将对象转换为可搜索的对象
我一直在研究Java集合和实体,我写的是一个巨大的ArrayList
,有几个HashMap
Java 8可能适合:
Item item = items.stream()
.filter((it) -> it.type == 1)
.filter((it) -> it.damage == 4)
.findFirst().orElse(null);
另外,在您的情况下,.parallel()
可能有助于提高速度(分而治之)。首先想到的问题是:对于1亿条记录数据集,您为什么不想使用真正的、经过验证的数据库?感觉就像你在重新发明轮子。有很多免费的、开源的、相当容易使用的系统。PostgreSQL恰好是我目前最喜欢的,但现在你甚至不必使用关系数据库。胡猜,这与Minecraft有关吗?@immibis Hah:P不,我只是在用基本java和Graphics2D进行游戏设计试验。这可能比数据大小更相关;其实没有那么多。问题:使用简单线性搜索的性能如何?这是您在尝试优化之前应该检查的内容。如果这不好,那么优化一个参数的搜索又如何呢?这可能是通过某种类型的bucket结构来实现的,它可以放在一个hash映射中(将参数映射到bucket列表)。你只需对水桶本身进行线性搜索。哦,哇,看起来就像LINQ。很高兴知道它的存在,我现在正在检查它。