我有一個很大(超過100K對象)的Java對象集合,如下所示。如何在Java bean中執行不精確的比較?
public class User
{
//declared as public in this example for brevity...
public String first_name;
public String last_name;
public String ssn;
public String email;
public String blog_url;
...
}
現在,我需要搜索該列表爲一個對象,其中至少3個(任何3個或更多)的屬性匹配的對象的被搜索。
例如,如果我在尋找一個具有對象
first_name="John",
last_name="Gault",
ssn="000-00-0000",
email="[email protected]",
blog_url="http://myblog.wordpress.com"
搜索應該返回我的所有對象,其中first_name,last_name and ssn
匹配或那些last_name, ssn, email and blog_url
比賽。同樣,也可以有其他組合。
我想知道什麼是最好的數據結構/算法在這種情況下使用。對於精確搜索,我可以使用自定義比較器的哈希集或二進制搜索,但我不確定執行此類搜索的最有效方法是什麼。
P.S.
這是不是一個課外練習。
我不確定問題標題是否合適。請隨意編輯。
編輯 你們中有些人指出這樣的事實,我可以用SSN(爲前)的搜索,因爲它或多或少是唯一的。上面的例子只是說明真實情況。實際上,我有幾個對象,其中一些字段爲空,所以我想在其他字段上搜索。
電子郵件和blog_url也不太可能在幾個人之間共享。 – Artelius 2009-11-02 22:18:51
@ moowiz2020和@Artelius,好點。但這只是說明問題的一個例子。實際上,我所搜索的項目並非如此獨特或始終可用(例如,對於某些用戶,ssn爲空)。也許我應該選擇一個更好的例子。 – Rahul 2009-11-03 01:35:26