У меня есть файл, который содержит множество файлов свойств, строка за строкой может быть около 1000, и каждый файл свойств будет иметь около 5000 пар ключ-значение. Например: - Пример примера (abc.txt) -
abc1.properties
abc2.properties
abc3.properties
abc4.properties
abc5.properties
Итак, я открываю этот файл и, когда он читает каждую строку, я загружаю файл свойств в методе loadProperties. И сохранение пары ключ-значение из этого свойства в LinkedHashMap.
public class Project {
public static HashMap<String, String> hashMap;
public static void main(String[] args) {
BufferedReader br = null;
hashMap = new LinkedHashMap<String, String>();
try {
br = new BufferedReader(new FileReader("C:\\apps\\apache\\tomcat7\\webapps\\examples\\WEB-INF\\classes\\abc.txt"));
String line = null;
while ((line = br.readLine()) != null) {
loadProperties(line);//loads abc1.properties first time
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//I am loading each property file in this method. And checking whether the key
already exists in the hashMap if it exists in the hashMap then concatenate the
new key value with the previous key value. And keep on doing everytime you
find key exists.
private static void loadProperties(String line) {
Properties prop = new Properties();
InputStream in = Project.class.getResourceAsStream(line);
String value = null;
try {
prop.load(in);
for(Object str: prop.keySet()) {
if(hashMap.containsKey(str.toString())) {
StringBuilder sb = new StringBuilder().append(hashMap.get(str)).append("-").append(prop.getProperty((String) str));
hashMap.put(str.toString(), sb.toString());
} else {
value = prop.getProperty((String) str);
hashMap.put(str.toString(), value);
System.out.println(str+" - "+value);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Итак, у меня вопрос: у меня более 1000 файлов свойств, а в каждом файле свойств - более 5000 пар ключ-значение. И большинство файлов свойств имеют один и тот же ключ, но с разными значениями, поэтому я должен объединить значение с предыдущим значением, если ключ такой же. Есть ли какие-либо ограничения по размеру с LinkedHashMap, так как файл свойств продолжает увеличиваться, а также пара ключ-значение в файле свойств. То есть этот код достаточно оптимизирован для решения подобных проблем?