2010-03-28 9 views
0

Je suis nouveau à Java, la fonction que je voudrais effectuer est de charger une série de données à partir d'un fichier, dans ma fonction hashSet(). Le problème est, je peux entrer toutes les données dans la séquence, mais je ne peux pas le récupérer dans la base de la séquence sur le nom du compte dans le fichier.Comment trier les données de la fonction HashSet() en séquence?

Quelqu'un peut-il aider?

ci-dessous est mon code:

publique Set retrieveHistory() { Set dataGroup = new HashSet(); try {

 File file = new File("C:\\Documents and Settings\\vincent\\My Documents\\NetBeansProjects\\vincenttesting\\src\\vincenttesting\\vincenthistory.txt"); 

     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String data = br.readLine(); 
     while(data != null){ 
      System.out.println("This is all the record:"+data); 
      Customer cust = new Customer(); 
      //break the data based on the , 
      String array[] = data.split(","); 
      cust.setCustomerName(array[0]); 
      cust.setpassword(array[1]); 
      cust.setlocation(array[2]); 
      cust.setday(array[3]); 
      cust.setmonth(array[4]); 
      cust.setyear(array[5]); 
      cust.setAmount(Double.parseDouble(array[6])); 
      cust.settransaction(Double.parseDouble(array[7])); 
      dataGroup.add(cust); 
      //then proced to read next customer. 

      data = br.readLine(); 
     } 
     br.close(); 
    }catch(Exception e){ 
     System.out.println("error" +e); 
    } 
    return dataGroup; 
} 

public static void main(String[] args) { 
    FileReadDataModel fr = new FileReadDataModel(); 
    Set customerGroup = fr.retrieveHistory(); 
    System.out.println(e); 
    for(Object obj : customerGroup){ 
     Customer cust = (Customer)obj; 

     System.out.println("Cust name :" +cust.getCustomerName()); 
     System.out.println("Cust amount :" +cust.getAmount()); 

    } 

Répondre

3

directement à partir de la classe HashSet javadoc

Cette classe implémente l'interface Set , soutenu par une table de hachage (en fait une instance de HashMap). Il ne donne aucune garantie quant à l'ordre d'itération de l'ensemble; en particulier, il ne garantit pas que l'ordre restera constant sur temps. Cette classe autorise l'élément null .

Si vous utilisez cette classe, il n'y a aucun moyen de garantir la commande. Vous devrez introduire une autre structure de données pour ce faire. Tel que ArrayList ou LinkedHashSet.

+0

que diriez-vous si vous utilisez hashmap ?? merci pour votre commentaire –

+0

ok je l'obtiens d ... avec l'utilisation linkedHashSet !! Merci beaucoup !! –

1

java.util.Set est une collection unique (élément peut apparaître qu'une seule fois), hachage, base non ordonnée (les objets doivent remplir le contrat Object.hashCode()).

Vous voulez probablement une collection ordonnée. LinkedHashSet est une collection unique, ordonnée (par ordre d'insertion), basée sur le hachage.

+0

MERCI Tellement !! je l'obtiens .. =) –