2016-02-28 7 views
0

Я новичок в Java и пытается изучить класс Properties. Я придумал код ниже. Однако, когда я запускаю код, я заметил, что три свойства хранятся в random.txt в обратном порядке выполнения кода. Почему это так? Может кто-нибудь, пожалуйста, просветит меня? Заранее благодарю за любую помощь!при сохранении свойств в текстовом файле, записанный порядок свойств в текстовом файле находится в обратном порядке выполнения кода

Properties p1 = new Properties(); 
    try (OutputStream os1 = new FileOutputStream("random.txt")){ 
     p1.setProperty("1", "one"); 
     p1.setProperty("2", "two"); 
     p1.setProperty("3", "three"); 
     p1.store(os1, "comment"); 
    } catch(IOException e){ 
     e.printStackTrace(); 
    } 

ответ

2

Properties класса используются для поддержания списков значений, в котором ключ является строкой, а значение также строка. Класс Properties расширяет класс Hashtable.

И порядок итерации хэш-набора не определен в JDK.

Однако вы можете вытащить значения из файла свойств в первоначальном порядке, создав свой собственный подкласс свойств и переопределив put() и setProperty().

1

Отметьте, что Properties работает с (продолжается) Hashtable.

Карты по своей сути «неупорядочены».

Если вы хотите узнать больше и действительно хранить данные, пожалуйста, ознакомьтесь с этой ссылкой How can I write Java Properties in a defined order. На этот вопрос был дан ответ:

1

Можете ли вы вызвать хранилище после каждого setProperty, как указано выше. Тип данных, который использует хранилище, вероятно, LIFO (последний в первом порядке), и поэтому последнее, что нужно установить, это первое спасение.

Попробуйте позвонить в магазин после каждого свойства!