我是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());
}
答案 0 :(得分:3)
直接来自HashSet类javadoc
此类实现Set 接口,由哈希表支持 (实际上是一个HashMap实例)。它 不保证 集合的迭代顺序;在 特别是,它并不保证 订单将保持不变 时间。该类允许null 元件。
如果您使用此课程,则无法保证订单。您需要引入另一种数据结构才能执行此操作。例如ArrayList或LinkedHashSet。
答案 1 :(得分:1)
java.util.Set是一个唯一的(元素可能只出现一次),非有序的,基于散列的(对象必须满足Object.hashCode()契约)集合。
您可能想要一个有序的集合。 LinkedHashSet是一个唯一的,有序的(按插入顺序),基于散列的集合。