我有一个属性(无法更改此文件),它看起来像:
aaa.bbb.ccc.first=my first value
aaa.bbb.ccc.second=my second value
aaa.bbb.ccc.third=my third value
如果我在java类中需要任何值,我使用i18n.getText("aaa.bbb.ccc.first")
但它仅适用于单个值。
问题是因为我不知道:
- 值的名称
- aaa.bbb.ccc中有多少值.~
如何获得值列表aaa.bbb.ccc~?
答案 0 :(得分:1)
您可以使用MapFilter。使用MapFilter(Properties p, String prefix)
构造函数。
public void test() {
Properties props = new Properties();
props.put("aaa.bbb.ccc.first", "my first value");
props.put("aaa.bbb.ccc.second", "my second value");
props.put("aaa.bbb.ccc.third", "my third value");
props.put("Other.props", "others");
MapFilter<String> filtered = new MapFilter(props, "aaa.bbb.ccc.");
for (Map.Entry<String, String> e : filtered.entrySet()) {
System.out.println("Key: " + e.getKey() + " Value: " + e.getValue());
}
System.out.println(filtered);
}
答案 1 :(得分:0)
哈希映射不适用于您要执行的查找类型:Intel® 64 and IA-32 Architectures Optimization Reference Manual和Tries。在radix trees中有一个Patricia trie数据结构(即二进制基数树)的实现:只需从你的Map<String, Whatever>
创建一个trie(你有一个很好的构造函数)和{{1获取其密钥具有该前缀的所有条目的子图。
答案 2 :(得分:0)
属性有一个方法propertyNames()。您可以使用它来获取所有键,然后从那里做任何你想做的事。