小编典典

具有列表作为单个键值的属性文件

java

对于我的程序,我想从属性文件中读取一个键,并从该键关联的值列表中读取。
最近我在尝试那样

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]}
在网上搜索了这种方法,但一无所获。我希望有办法。有什么帮助吗?


阅读 223

收藏
2020-10-09

共1个答案

小编典典

尝试将属性编写为以逗号分隔的列表,然后在加载属性文件后拆分值。例如

a=one,two,three
b=nine,ten,fourteen

如果您在值中使用逗号,则还可以使用org.apache.commons.configuration并使用AbstractConfiguration.setListDelimiter(char)方法更改值定界符。

2020-10-09