2016-11-27 1 views
0

Je stocke le tableau d'objets dans un fichier texte
Exemple; objet = personnel. Le personnel se compose d'ID, de nom, etc. Chaque ligne dans le fichier texte est StaffID, StaffName, etc.Ecriture d'un tableau d'objets dans un fichier texte dans la position correcte

Jusqu'à maintenant, chaque ID de personnel venait d'être le numéro de ligne, donc lors de l'ajout d'un nouveau profil de personnel, l'ID est juste l'ID précédent +1 et peut être écrit à la fin du fichier.

Cependant, j'ai changé la structure de l'ID. Il est maintenant composé de (secteur * 1000) + numéro suivant. Par exemple. 5 personnes travaillant dans le secteur 2 ont les ID 2001, 2002, 2003, 2004, 2005.

Maintenant, mon problème vient quand une recherche binaire est effectuée. Auparavant, il était facile d'ajouter du nouveau personnel et de toujours les avoir dans le bon ordre. Cependant, maintenant j'ai besoin d'un moyen d'être en mesure d'écrire un nouveau profil à la position correcte dans le fichier texte.

voici quelques extraits:

String staffData = staffID, staffName, staffAddress, staffMed; 

Ceci est ajouté à un tableau du personnel qui est ensuite écrit en utilisant le code suivant:

try 
    { 
     FileWriter writer = new FileWriter(Filename, true); 
     BufferedWriter bWriter = new BufferedWriter(writer); 
     for(int i =0;i<freeLocation;i++) 
     { 

      String staffString = StaffArray[i].toString(); 

      bWriter.write(currentPositionStaffProfile); 
      bWriter.newLine(); 
     } 
     bWriter.close(); 
    } 

Le fichier texte ressemble à ce

1001, John, Address, n/a 
4001, Smith, Address, n/a 

Je veux savoir, comment être en mesure d'ajouter un profil de personnel qui peut être écrit entre les lignes dans le bon placez donc les ID du personnel sont dans l'ordre croissant et pas seulement à la fin du fichier.

Merci

+0

Quelle est la taille maximale approximative de vos données? –

Répondre

0

Vous devez charger le fichier dans un HashMap ou comme TreeMap magasin de données en mémoire et insérez de nouveaux objets à lui.

Ensuite, pour écrire dans un fichier itérer sur TreeMap (donne l'ordre des clés triées) OU récupérer les clés de HashMap et les trier.

Vous allez donc faire toutes les opérations d'insertion/mise à jour/suppression sur ce HashMap/TreeMap et simplement écrire les données dans un fichier dans l'ordre de tri si nécessaire. De cette façon, vous n'avez pas à vous soucier de la ligne à écrire (comme le fait votre solution actuelle/proposée).