IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème de l’annuaire en java


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Problème de l’annuaire en java
    Bonjour à tous j'ai un programme à faire en java sur java, je ne sais pas par où commencer c'est pourquoi je vous demande quelques idées, merci d'avance

    d’optimiser un petit programme faisant office d’annuaire de la société. Les utilisateurs entrent un nom et obtiennent le numéro de téléphone associé en retour.
    Ce programme lit dans un fichier texte des milliers de couples d’information « nom / numéro de téléphone ». Le fichier texte fait quelques dizaines de Mo.
    Le fichier texte est mis à jour une fois par jour, la nuit, quand l'application est éteinte.
    On compte une dizaine de milliers d’utilisations (demande d’un numéro de téléphone) chaque jour.
    Actuellement, pour chaque demande utilisateur, le programme parcourt séquentiellement le fichier pour trouver la réponse à renvoyer. Cette opération prend parfois plusieurs secondes.
    On vous demande quelles modifications effectuer dans le programme pour accélérer les demandes utilisateur (sans utiliser de base de données).

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Babyboystwo Voir le message
    Bonjour à tous j'ai un programme à faire en java sur java
    Euh, tu t'es pas un peu embrouillé là ?

    Sinon pour le reste de ce qui est exposé là, j'aurais une question en retour :
    - Pourquoi pas de base de données ? (trop de refonte ? trop compliqué ? trop long ?)

    Car là tu parles de milliers de données et de dizaine de milliers d'utilisation, je ne vois pas ce qu'il y a de mieux que de tout migrer sur une base de données ? Sinon l'autre axe serait d'améliorer la recherche au sein de ton fichier (en le triant par exemple). Tu n'aurais ainsi un parcours plus intelligent. Mais la base de données serait vraiment LA solution dans ce cas.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    +1 pour le tri
    Tu tri ton fichier une bonne fois pour toute.
    Ensuite lors de l'insertion d'un nouveau membre, tu l'insère au bon endroit pour que le tri reste correct. (tri par insertion par exemple)
    Plus qu'à rechercher le membre en faisant une "recherche dichotomique", ou autre.

    Et ton problème sera résolu

    Sinon une BDD local limite et le tour est joué
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Vu la structure de ton fichier est du genre "NOM / NUMTEL" et qu'il n'est pas si gros que ça, pourquoi ne pas le lire une première fois en intégralité pour le mettre dans un Set (SortedTreeSet par example).
    Ensuite, il "suffit" de recupérer l'info dans le Set.

    Cette solution ne peut être efficace que si le fichier n'est lu qu'une seule fois. Ca dépend des modalités d'accès à ton programme: lancé "from scratch" à chaque appel, ou lancé une seule fois puis accédé plusieurs fois...
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Concrètement, si on recherche par nom exact, autant mettre une HashMap qui sera plus performante.

    Par contre, si on veut pouvoir rechercher les noms comme on le ferait dans un dictionnaire, typiquement en ayant le nom qui suit et qui précède une saisie, alors une TreeMap sera plus indiquée.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Je suis pour le tri.
    Mais si tu ne peux pas utiliser de hashmap, tu peux toujours diviser ton fichier en 26 fichiers correspondant à chaque lettre de l'alphabet.

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    ... Mais la base de données serait vraiment LA solution dans ce cas.
    Robin, tu te trompe... C'est LA solution !
    Vous pouvez très bien utiliser une base de donnée tout en gardant votre système de fichier pour le stockage.

    Il existe pour java un projet nommé hsqldb
    1. Chaque table de la base de donnée est stocker dans un fichier texte.
    De mémoire :
    L'encodage est paramétrable.
    L'extension n'a pas d'importance.
    Une ligne équivaut à un enregistrement.
    Les champs sont séparés par un séparateur paramétrable.
    Exemple avec encodage par défaut et séparateur | (structure id|Nom|Name):
    0 | L'ile des Avatar | Avatar Island
    1 | Map de test developpeur | developper map test
    22 | L'ecole des Noobs | Noob school
    Je n'ai pas testé personnellement sur des fichiers de plusieurs Mo, mais je ne pense pas que cela soit un problème.

    Il y a d'ailleurs un tutoriel ici !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. [JNI] Problème dû aux threads Java
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/11/2006, 13h14
  2. Problème dans le paquetage java.util
    Par MaxBomba dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 10/11/2006, 22h45
  3. Problème de date avec JAVA & Oracle
    Par bobic dans le forum JDBC
    Réponses: 2
    Dernier message: 02/11/2006, 12h21
  4. problème d'execution programme java
    Par mel_gasy dans le forum EDI et Outils pour Java
    Réponses: 6
    Dernier message: 08/10/2006, 01h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo