有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么样的数据结构可以用来存储具有多个可比较属性的对象

我想建立一个数据结构来存储多个房屋的信息,以后用户可以通过搜索查询来检索所需的房屋信息。为了实现快速搜索,我将使用红黑树。我面临的问题是,每个节点的键只包含房屋的一个属性,即价格,而其他属性,如床位数、土地面积等,它们不能存储在一棵树中。对于这个问题,什么样的数据结构才是好的呢?最初我认为树嵌套在树中,这是可行的还是好的


共 (1) 个答案

  1. # 1 楼答案

    您面临的问题可以通过在数据上使用二级索引来解决。二级索引是数据库界深入研究的一个概念,您应该可以毫不费力地找到资源来帮助您了解它们在实际数据库中的实现方式

    因此,您当前有一个数据主键:对象内存引用,或者引用集合的索引。对于要查询的每个属性,需要有一种快速查找匹配对象的方法。您使用的确切数据结构将取决于您执行的查询类型,但某种类型的搜索树将是一种良好的通用数据结构,并且通常对更新非常有效,这对于许多数据库都非常重要。您的数据结构应该接受与特定属性相关的查询,并返回与该查询匹配的所有对象的引用或主键

    在您的示例中,一棵红黑树表示价格,另一棵表示床数。如果您要回答“price=30或床位数=4”的查询,那么您需要做的就是查询price数据结构,然后查询床位数数据结构,因为您的查询中有一个“或”,所以您只需获取从数据结构返回的主键的并集(取“和”的交点)

    请注意,如果添加或更新对象,则还需要更新所有更改的索引。这是一个权衡,你也可以在真实的数据库中看到;读得更快,写得更慢

    嵌套树方法可能会根据您正在进行的查询类型而工作,但如果数据结构不是静态的,则很快就会变得不合适-如果您更新对象,则更新树的速度会非常慢