2015-09-03 2 views
2

У меня есть огромный файл, который содержит строки в формате key = value. Если я хочу получить значение определенного ключа, используя метод класса getProperty() класса Properties в java, является ли полный файл загружен в память до выполнения операции getProperty()?Свойства Класс getProperty() внутренности

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

+1

Да, полная таблица загружается, когда вы вызываете метод загрузки. Метод загрузки в основном проходит через каждую строку и разбивает его с помощью символа '=' и сохраняет значение перед и за «=» на карте. – Distjubo

ответ

2

TL; DR: весь файл загружается в память

java.util.Properties не HashTable реализации, она являетсяHashTable. то есть это поиск в хэш-памяти в памяти.

От source code вы можете увидеть реализацию getProperty просто делегатов super.get, который HashTable.get:

public String getProperty(String key) { 
    Object oval = super.get(key); 
    String sval = (oval instanceof String) ? (String)oval : null; 
    return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval; 
} 

Метод load считывает файл свойств (.properties или XML) в HashTable.

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