对于我的程序,我想从属性文件中读取一个键,并从该键关联的值列表中读取。 最近我在尝试那样
public static Map<String,List<String>>categoryMap = new Hashtable<String, List<String>>(); Properties prop = new Properties(); try { prop2.load(new FileInputStream(/displayCategerization.properties)); Set<Object> keys = prop.keySet(); List<String> categoryList = new ArrayList<String>(); for (Object key : keys) { categoryList.add((String)prop2.get(key)); LogDisplayService.categoryMap.put((String)key,categoryList); } System.out.println(categoryList); System.out.println("Category Map :"+LogDisplayService.categoryMap); keys = null; prop = null; } catch (Throwable e) { e.printStackTrace(); }
我的属性文件如下所示-
A=APPLE A=ALPHABET A=ANT B=BAT B=BALL B=BUS
我想要键A应该有一个包含contains [APPLE, ALPHABET,ANT]和B包含的列表[BAT,BALL,BUS]。 因此Map应该是这样,{A=[APPLE, ALPHABET,ANT], B=[BAT,BALL,BUS]}但是我 {A=[ANT], B=[BUS]} 在网上搜索了这种方法,但一无所获。我希望有办法。有什么帮助吗?
[APPLE, ALPHABET,ANT]
[BAT,BALL,BUS]
{A=[APPLE, ALPHABET,ANT], B=[BAT,BALL,BUS]}
{A=[ANT], B=[BUS]}
尝试将属性编写为以逗号分隔的列表,然后在加载属性文件后拆分值。例如
a=one,two,three b=nine,ten,fourteen
如果您在值中使用逗号,则还可以使用org.apache.commons.configuration并使用AbstractConfiguration.setListDelimiter(char)方法更改值定界符。