0
votes

Java Comparez deux enregistrements identiques id dans deux types de listes différents dans Java

Étudiant de classe: Nom de la chaîne, Enregistrer String, String Dept, Integer Pendercollegegefee Classe Hostelstudent: Nom de cordes, Entrée de la chaîne, Integer Pendinghostelfee, Integer PendemessFeee et liste de deux objets:

  1. Liste de la liste des étudiants <Étudiant> Collegestudents;
  2. Liste de la liste d'hostelstudent Hostelstudents;

    maintenant, je souhaite comparer les enregistrements dans les deux listes ayant le même nom et le même numéro de nom, puis devez appeler une méthode avec l'enregistrement dont les valeurs sont toutes deux dans deux listes à xxx

    Quelqu'un peut-il m'aider à atteindre ce problème dans O (nlogn) ou même moins parce que la longueur de l'enregistrement de la liste est très élevée.


0 commentaires

3 Réponses :


1
votes

Trier chaque liste par nom et numéro de registre: O (n logn).

boucle via la première liste et pour chaque élément de recherche binaire de l'autre liste d'une correspondance, puis effectuez toutes les opérations nécessaires sur les deux éléments correspondants. La recherche binaire est O (logn), c'est donc globalement O (n logn).

Les deux étapes sont O (n logn), de sorte que l'algorithme est toujours O (nlogn)


0 commentaires

0
votes

Faire une classe représentant juste une "identité" (donc, vraisemblablement, nom + registre, bien que cela ressemble à vous avoir mal jugé la situation et que vous voulez vraiment "regretter" pour être la clé unique, auquel cas vous pouvez Il suffit d'utiliser une chaîne), puis au lieu de listes, utilisez des cartes:

Carte et Carte . .

Ces recherches sont beaucoup plus rapides.

Alternativement, triez vos listes sur par exemple Enregistrer , vous pouvez utiliser une recherche binaire (que vous pouvez trouver dans la classe de collections), qui est également des commandes de grandeur plus rapidement que de rechercher une liste. Cependant, vous devez saisir la source de recherche binaire (ou utiliser Wikipedia pour comprendre l'algorithme; vous souhaitez utiliser un combo de nom Reigster + pour trouver une entrée, vous n'aurez pas d'instance réelle de Hostelstudent à rechercher.

Tout dans toute la solution de carte va être beaucoup, beaucoup plus simple. Je vous conseille fortement d'aller avec ça.


0 commentaires

1
votes

Tout d'abord, je prolongerais la classe d'étudiants dans la classe Hostelstudent. Vous utilisez plusieurs variables à la fois.

étudiant.cs: xxx

hostelstudent.cs: xxx

Vous pouvez faire une liste de la liste de l'étudiant <étudiant> et une liste de la liste de Hostelstudent . Après avoir rempli les listes, vous pouvez les boucler en vérifiez si les valeurs sont identiques. (N'oubliez pas vos getters / setters).


0 commentaires