2013-07-13 2 views
1

Я сохраняю несколько значений в файле свойств, но всякий раз, когда я открываю файл, значения не записываются в том порядке, в котором я закодирован.Свойства Файл не хранится в правильном порядке

save.setProperty("SN", "foo"); 
save.setProperty("ID", "bar"); 
save.setProperty("TN", "example"); 
save.setProperty("TC", "generic"); 
save.setProperty("SW", "incorrect"); 
save.setProperty("NW", "order"); 
save.store(new FileOutputStream(file.getAbsolutePath(), null); 

Это выглядит как файл, когда я открываю его:

#Sat Jul 13 19:28:59 EDT 2013 
ID=bar 
SW=incorrect 
TC=generic 
TN=example 
NW=order 
SN=foo 

Как вы можете видеть, порядок полностью отключен от кодирования. Мне любопытно, почему это происходит. Это, очевидно, не отсортировано по алфавиту, и я не вижу другой причины, почему это должно произойти так.

+1

Вы также заметите, что комментарии также перемещаются или удаляются. – EJP

+0

Зачем вам все это? –

+0

@HotLicks Потому что мне было любопытно. Какое тебе дело? – Aaron

ответ

4

Класс Properties расширяет класс Hashtable.

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


Кстати, тот факт, что PropertiesрасширяетHashtable, вместо с помощью Hashtable, считается одним из многих дизайнерских "ошибок" в JDK.

Для получения более подробной информации о других "ошибках" см. this answer.

1

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

+0

Есть больше, чем «хороший шанс». Свойства расширяют Hashtable. – EJP

+1

Я не был на 100% уверен, я никогда раньше не использовал «Свойства». Это было просто предположение, что оказалось прав! – AStupidNoob

Смежные вопросы