У меня есть большая (более 100 тыс. Объектов) коллекция объектов Java, как показано ниже.
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="xyz@abc.com",
blog_url="http://myblog.wordpress.com"
Поиск должен вернуть мне все объекты, где first_name,last_name and ssn
соответствует или те, где last_name, ssn, email and blog_url
соответствуют. Точно так же могут быть и другие комбинации.
Я хотел бы знать, какую структуру данных / алгоритм лучше использовать в этом случае. Для точного поиска я мог бы использовать хэш-набор или двоичный поиск с пользовательским компаратором, но я не уверен, каков наиболее эффективный способ выполнить этот тип поиска.
P.S.
Это , а не домашнее задание.
Я не уверен, подходит ли название вопроса. Пожалуйста, не стесняйтесь редактировать.
EDIT
Некоторые из вас отметили тот факт, что я мог бы использовать ssn (например,) для поиска, так как он более или менее уникален. Пример выше является только иллюстрацией реального сценария. На самом деле, у меня есть несколько объектов, некоторые поля которых не заданы, поэтому я хотел бы выполнить поиск по другим полям.