Как отсортировать данные функции HashSet () в последовательности? - PullRequest
0 голосов
/ 28 марта 2010

Я новичок в Java, функция, которую я хотел бы выполнить, - загрузить серию данных из файла в мою функцию hashSet ().

проблема в том, что я могу ввести все данные в последовательности, но я не могу получить их последовательно в зависимости от имени учетной записи в файле.

Может кто-нибудь помочь?

ниже мой код:

public Set retrieveHistory () { Set 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 ]

3 голосов
/ 28 марта 2010

Непосредственно из HashSet класса Javadoc

Этот класс реализует Set интерфейс, поддерживаемый хеш-таблицей (на самом деле экземпляр HashMap). Это не дает никаких гарантий относительно порядок итераций множества; в в частности, это не гарантирует, что порядок останется неизменным в течение время. Этот класс допускает нуль элемент.

Если вы используете этот класс, нет способа гарантировать заказ. Вам нужно будет ввести другую структуру данных, чтобы сделать это. Например, ArrayList или LinkedHashSet .

1 голос
/ 28 марта 2010

java.util.Set является уникальным (элемент может появляться только один раз), неупорядоченным, основанным на хэше (объекты должны соответствовать контракту Object.hashCode ()).

Возможно, вы хотите заказать коллекцию. LinkedHashSet - это уникальная, упорядоченная (по порядку вставки) коллекция на основе хеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...