2010-03-28 105 views
0

我是Java的新手,我想要执行的功能是从文件加载一系列数据到我的hashSet()函数中。如何按顺序对HashSet()函数数据进行排序?

问题是,我能够按顺序输入所有数据,但无法依据文件中的帐户名称依次检索它。

任何人都可以帮忙吗?

下面

是我的代码:

公共设置retrieveHistory(){ 设置dataGroup时=新的HashSet(); 尝试{

 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()); 

    } 

回答

3

直接从HashSet类的javadoc

这个类实现Set 接口,由哈希表 (实际上是一个HashMap实例)支持。 对集合的 迭代次序不作任何保证;在 特别是,它不保证 订单将保持恒定在 时间。该类允许使用空元素 。

如果您正在使用此类,则无法保证订单。您需要引入另一个数据结构才能执行此操作。如ArrayListLinkedHashSet

+0

如果使用hashmap?感谢您的评论 – 2010-03-28 18:34:37

+0

好吧我得到它与...使用linkedHashSet!非常感谢 !! – 2010-03-28 18:37:17

1

java.util.Set中是唯一的(元素可以只出现一次),非有序,基于散列的(对象必须履行的是Object.hashCode()的合同)的集合。

你可能想要一个有序的集合。 LinkedHashSet是唯一的,有序的(按插入顺序),基于哈希的集合。

+0

非常感谢你!我明白了.. =) – 2010-03-28 18:41:29

相关问题