【问题标题】:Does Java have an database-like structure?Java 有类似数据库的结构吗?
【发布时间】:2015-04-11 04:53:12
【问题描述】:

我一直在编写一种“排序和聚合”方法,以使这个约 100MB 的数据集可有效搜索,但代码有点长。

对象是简单的类,如

class item {
    public int type = 1;
    public int damage = 4;
}

我所做的基本上是创建一个我可以说items.type(1).damage(4).getItem();的类

Java 是否有任何类可以以类似的方式将对象转换为可搜索的对象?

我一直在研究 Java 集合和实体,其中我写的是一个巨大的 ArrayList<Item> 和几个 HashMap<Item>

【问题讨论】:

  • 立即想到的问题:对于 1 亿条记录的数据集,您为什么不想使用真实的、经过验证的数据库?感觉就像你在重新发明轮子。有很多免费的、开源的、相当容易使用的系统。 PostgreSQL 恰好是我目前最喜欢的,但现在你甚至不必使用关系数据库。
  • 猜猜看,这和我的世界有关吗?
  • @immibis Hah :P 不,我只是在使用基本的 java 和 Graphics2D 来试验游戏设计。
  • 这可能比数据大小更相关;真的不多。问题:使用简单线性搜索的性能如何?这是您在尝试优化之前应该检查的内容。如果这不好,那么优化一个参数的搜索呢?这可以通过某种桶结构来完成,它可以进入哈希映射(将参数映射到桶列表)。您只需对存储桶本身进行线性搜索。

标签: java


【解决方案1】:

Java 8 可能很合适:

Item item = items.stream()
    .filter((it) -> it.type == 1)
    .filter((it) -> it.damage == 4)
    .findFirst().orElse(null);

附:在您的情况下,.parallel() 可能有助于提高速度(分而治之)。

【讨论】:

  • 哦,哇,看起来就像 LINQ。很高兴知道它的存在,我现在正在检查它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2015-08-20
  • 2011-07-04
相关资源
最近更新 更多