Partage
  • Partager sur Facebook
  • Partager sur Twitter

hashset ou sortedset

    4 septembre 2019 à 20:24:50

    Salut,

    Si on veut classer des messages (qui sont des objets d'une classe Message) dans une collection de sorte à les affichés : les messages non lus ensuite les messages lus et pour chacun des cas on commence par le premier selon un identifiants de type int qu'on donne pour chaque message.

    Pour être plus clair: un message de la classe Message posséde des atributs comme le titre le contenu l'émetteur un booleen lu (pour dire si le message est lu ou pas) et id qui sert comme identifiant.

    à mon avis je propose un hashset car on ne peut pas avoir des doublant et aussi lors de la recherche on aura besoin d'une clé l'id , mais j'hesite entre sortedset et hashset que vous en pensez ? 

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2019 à 14:10:16

      Tu ne dois pas utiliser SortedSet avec un tri dépendant du statut "lu" ou "non lu", pour une raison très simple.

      Dans un SortedSet, les données sont généralement triées lors de leur insertion dans le Set.

      Or si un message passe de "non lu" à "lu", cela modifie le tri.
      Et SortedSet ne te garantit pas que le tri soit refait. En pratique, le tri n'est jamais refait et donc ton message reste mal trié.

      La solution la plus simple serait d'utiliser HashSet et de re-trier les messages à chaque fois que tu veux les lire. Mais c'est contre-performant.

      L'autre solution serait d'utiliser un SortedSet basé uniquement sur les identifiants des messages ; à condition que les identifiants soient immuables !
      À chaque fois que tu veux parcourir les messages, il faudrait un petit algorithme qui te les place dans une liste et mette les non lus en premier.

      • Partager sur Facebook
      • Partager sur Twitter

      hashset ou sortedset

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown