J'ai une grande collection (plus de 100K objets) d'objets Java comme ci-dessous.Comment effectuer une comparaison inexacte dans les beans 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;
...
}
Maintenant, je dois rechercher cette liste pour un objet dont au moins 3 (3 tout ou plus) les attributs correspondent à ceux de l'objet recherché.
Par exemple, si je suis à la recherche d'un objet qui a
first_name="John",
last_name="Gault",
ssn="000-00-0000",
email="[email protected]",
blog_url="http://myblog.wordpress.com"
La recherche devrait me retourner tous les objets où first_name,last_name and ssn
allumette ou ceux où last_name, ssn, email and blog_url
correspondent. De même, il pourrait y avoir d'autres combinaisons.
Je voudrais savoir quelle est la meilleure structure de données/algorithme à utiliser dans ce cas. Pour une recherche exacte, j'aurais pu utiliser un hashset ou une recherche binaire avec un comparateur personnalisé, mais je ne suis pas sûr de la manière la plus efficace d'effectuer ce type de recherche.
P.S.
C'est pas un exercice de devoirs.
Je ne suis pas sûr que le titre de la question soit approprié. S'il vous plaît, n'hésitez pas à modifier.
EDIT Certains d'entre vous ont souligné le fait que je pouvais utiliser ssn (par ex.) Pour la recherche car il est plus ou moins unique. L'exemple ci-dessus n'est qu'illustratif du scénario réel. En réalité, j'ai plusieurs objets où certains des champs sont nuls donc je voudrais chercher sur d'autres champs.
Email et blog_url sont également assez peu susceptibles d'être partagés entre plusieurs personnes. – Artelius
@ Moowiz2020 et @Artelius, de bons points. Mais ceci n'est qu'un exemple pour illustrer le problème. En réalité, les éléments que je recherche ne sont pas si uniques ou toujours disponibles (par exemple, pour certains utilisateurs, ssn est nul). Peut-être aurais-je dû choisir un meilleur exemple. – Rahul