如何按顺序对HashSet()函数数据进行排序?

时间:2010-03-28 18:24:14

标签: java sorting hashset

我是Java的新手,我想要执行的功能是将一系列数据从文件加载到我的hashSet()函数中。

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

有人可以帮忙吗?

下面是我的代码:

public Set retrieveHistory(){         设置dataGroup = new 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());

    }

2 个答案:

答案 0 :(得分:3)

直接来自HashSet类javadoc

  

此类实现Set   接口,由哈希表支持   (实际上是一个HashMap实例)。它   不保证   集合的迭代顺序;在   特别是,它并不保证   订单将保持不变   时间。该类允许null   元件。

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

答案 1 :(得分:1)

java.util.Set是一个唯一的(元素可能只出现一次),非有序的,基于散列的(对象必须满足Object.hashCode()契约)集合。

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