繁体   English   中英

如何选择或编写自己的Java数据结构以允许多属性搜索

[英]how to choose or write my own java data structure allowing multi attributes search

我有一个很大的列表,其中包含一个类的许多实例,该类具有许多属性(成员变量)。 我的问题是找到一个可行的数据结构来存储这些实例,以允许基于多个属性(例如数据库搜索)进行搜索(即,一个学生班级,每个学生都有年龄,出生日期,年级和GPA。查找所有年龄在2岁以下的所有第二年级学生20至23之间)。 该地图似乎不适用,因为它只允许使用单个键,并且如果我创建了用于搜索的多属性索引,则大O仍不会减少。 我还考虑过使用像AVL树之类的树,但我认为这行不通。

如果有人可以给我一些提示,我将不胜感激。

我认为您正在寻找的是一个反向索引 (使用属性名称+值作为键)或每个属性一个反向索引。 搜索将建立为每个属性找到的所有结果的交集。

您可以这样做:

  • 用按最经常出现的属性(仅一个,例如“ id”或“ name”)排序的对象构建一个AVL树。
  • 然后创建一个搜索函数,而不是获取值,而是使用Java lambda表达式F(因此,您的seacrh条件必须类似于F(myObj) == true而不是myObj.deFaultAttribute == searchParameter
  • 对于您给出的示例,F可能类似于((myObj) -> myObj.year==2 && myObj.age>=20 && myObj.age<=23)
希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM