簡體   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