Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从属性文件解析映射_Java_Properties_Maps - Fatal编程技术网

Java 从属性文件解析映射

Java 从属性文件解析映射,java,properties,maps,Java,Properties,Maps,这是我上一个问题(发现)的后续问题。到目前为止,我的属性文件由简单的键值对组成,如int和string。我现在想用它来放置一些更高级的结构,更具体地说,我需要一个映射,其中a是我定义的类,例如: foo=bar,5;baz,10 这可能吗?如果是这样,我应该如何分别格式化文件和解析映射 有没有更好的方法来解决这个问题?您是否考虑过使用split()和trim() 请参阅下文: ResourceBundle rb=ResourceBundle.getBundle(Prop.class.getNa

这是我上一个问题(发现)的后续问题。到目前为止,我的属性文件由简单的键值对组成,如int和string。我现在想用它来放置一些更高级的结构,更具体地说,我需要一个映射,其中a是我定义的类,例如:

foo=bar,5;baz,10
这可能吗?如果是这样,我应该如何分别格式化文件和解析映射


有没有更好的方法来解决这个问题?

您是否考虑过使用split()和trim()

请参阅下文:

ResourceBundle rb=ResourceBundle.getBundle(Prop.class.getName())


对于您正在尝试做的事情和您的长期计划来说,这可能有点过头了,但是我发现Spring框架很容易处理这种事情

这里有一个参考说明,说明如何使用

还有一个

下面是Spring配置文件中的映射

<beans>
    <bean id="foo" class="x.y.Foo">
        <property name="accounts">
            <map>
                <entry key="one" value="9.99"/>
                <entry key="two" value="2.75"/>
                <entry key="six" value="3.99"/>
            </map>
        </property>
    </bean>
</beans>

使用XML而不是使用您自己的语言的属性文件来表示更复杂的结构,这样会减少工作量,减少错误,更易于维护


您可以使用诸如JIBX和XMLBean之类的绑定技术使事情变得更简单。

在本例中,最简单的方法是为它创建一个单独的属性文件。然后它只有名称/值对,比如

巴=5 baz=10

如果这是一张大桌子,我不想把它和更一般的东西混在一起。如果是一张有3对的桌子,那就不同了


属性文件确实是复杂数据结构的最佳解决方案。它们用于名称/值对。如果你超越了这一点,当然,你可以通过发明一种语法来让它工作,但是为什么要麻烦呢?如果它是一种超复杂的语法,那么XML就是一种可能。或者它属于关系数据库。或CSV文件。选择符合要求的工具,不要先决定工具,然后再尝试使其适合。

如果字符串需要包含逗号或分号,该怎么办?我肯定这不会成为问题。而且,它总是可以与其他字符交换。实际上,我最终使用了单独属性文件的组合以及Koekiebox的解决方案。我通过使用读取字符串进行解析并映射来创建类的实例。我对这个解决方案相当满意,因为到目前为止它工作得很好,更不用说它的可读性了。
<beans>
    <bean id="foo" class="x.y.Foo">
        <property name="accounts">
            <map>
                <entry key="one" value="9.99"/>
                <entry key="two" value="2.75"/>
                <entry key="six" value="3.99"/>
            </map>
        </property>
    </bean>
</beans>