gpt4 book ai didi

java - 通过从属性文件中读取来填充 HashSet

转载 作者:行者123 更新时间:2023-12-01 23:59:56 26 4
gpt4 key购买 nike

下面是我的config.property文件

TABLES: table1 table2

#For Table1
table1.url: jdbc:mysql://localhost:3306/garden
table1.user: gardener
table1.password: shavel
table1.driver: jdbc-driver
table1.percentage: 80
table1.column: column1
table1.column: column2
table1.column: column3



#For Table2
table2.url: jdbc:mysql://otherhost:3306/forest
table2.user: forester
table2.password: axe
table2.driver: jdbc-driver
table2.percentage: 20
table2.column: column1
table2.column: column2
table2.column: column3

下面是我的代码,我在其中尝试读取上面的属性文件,并通过用不同的值填充它来创建 ReadTableConnectionInfo 对象,但不知何故,列 HashSet 没有填充与每个对应的所有列名称 table 。我在每个表的每个列 HashSet 中只看到一个列名称。

private static void readPropertyFile() throws IOException {

prop.load(Read.class.getClassLoader().getResourceAsStream("config.properties"));

tableNames = Arrays.asList(prop.getProperty("TABLES").split(" "));

for (String arg : tableNames) {

ReadTableConnectionInfo ci = new ReadTableConnectionInfo();

String url = prop.getProperty(arg + ".url");
String user = prop.getProperty(arg + ".user");
String password = prop.getProperty(arg + ".password");
String driver = prop.getProperty(arg + ".driver");
String table = prop.getProperty(arg + ".table");
double percentage = Double.parseDouble(prop.getProperty(arg + ".percentage"));

String columnPrefix = arg + ".column";
HashSet<String> columns = new HashSet<String>();
for (String key : prop.stringPropertyNames()) {
if (key.startsWith(columnPrefix))
columns.add(prop.getProperty(key));
}

ci.setUrl(url);
ci.setUser(user);
ci.setPassword(password);
ci.setDriver(driver);
ci.setTableName(table);
ci.setPercentage(percentage);
ci.setColumns(columns);

tableList.put(arg, ci);
}
}

我在填充列 HashSet 然后将该列 HashSet 添加到 ReadTableConnectionInfo 类 时做的有什么问题吗?

最佳答案

问题是您在属性文件中多次重复相同的键,因此在加载它时,Properties 对象中仅加载一个键:

table1.column: column1
table1.column: column2 //key: table1.column
table1.column: column3 //key: table1.column
//similar for table2

只需将您的 key 名称更改为其他名称即可。

如果您不想这样做,可以将所有值连接到一个键中,然后使用 String#split 函数恢复每个值。

关于java - 通过从属性文件中读取来填充 HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15049048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com