Я пытаюсь прочитать из командной строки в java.Ввод значений в Map of Map
Предположим, если я передаю эти параметры из команды лайн-
TABLE1 TABLE2 TABLE3
Затем после чтения из командной строки, tableNames
список будет иметь все вышеуказанные три таблицы имен.
private static List<String> tableNames= new ArrayList<String>();
Теперь мне нужно перебрать эту tableNames
и поставить все в ConcurrentHashMap
, загрузив соответствующие значения из файла свойств.
Так как я делаю это что-то вроде этого.
private static ConcurrentHashMap< String,
ConcurrentHashMap< String, String >> tableList = new ConcurrentHashMap<>();
private static ConcurrentHashMap<String,
String > databaseDetails = new ConcurrentHashMap<>();
prop.load(MainTest.class.getClassLoader().getResourceAsStream("config.properties"));
for (String arg : tableNames) {
String url = (String) prop.get(arg + ".url");
String user = (String) prop.get(arg + ".user");
String password = (String) prop.get(arg + ".password");
String driver = (String) prop.get(arg + ".driver");
String suffix = (String) prop.get(arg + ".suffix");
String sql = (String) prop.get(arg + ".sql");
databaseDetails.put("URL",url);
databaseDetails.put("USER",user);
databaseDetails.put("PASSWORD",password);
databaseDetails.put("DRIVER",driver);
databaseDetails.put("SUFFIX",suffix);
databaseDetails.put("SQL",sql);
tableList.put(arg,databaseDetails);
}
Я не уверен, что это правильный способ поместить значения в карту карты? Или я могу улучшить это немного лучше?
держите его простым! вы можете хранить все ключи на одной карте, просто префикс ключей с помощью «TABLEx». –
Избегайте ненужных бросков: prop.getProperty (arg + ".url"); – Aubin
+1 для getProperty, я полностью это забыл. – AKIWEB