Java - 键值决策

时间:2012-07-10 11:16:25

标签: java

在文件中存储以下业务规则的最佳方法是什么,以便它们可以应用于输入值,这些输入值将是密钥?

Key-INDIA; Value-Delhi.
Key-Australia; Value-Canberra.
Key-Germany, Value-Berlin.

一种解决方案: - Xml

<Countries>
  <India>Delhi</India>
  <Australia>Canberra</Australia>
  <Germany>Berlin</Germany>
</Countries>

随着规则数量的增加&gt; 1000;使用Map实现它是不可能的。

此致 Shreyas。

4 个答案:

答案 0 :(得分:3)

使用.properties文件并将其存储在键值对中。

India=Delhi.
Australia=Canberra.
Germany=Berlin.

并使用java.util.Properties按照hmjd的说明读取该文件。

例如:

       Properties prop = new Properties();      
        try {
               //load a properties file
            prop.load(new FileInputStream("countries.properties"));

               //get the property value and print it out
                System.out.println(prop.getProperty("India"));
            System.out.println(prop.getProperty("Australia"));
            System.out.println(prop.getProperty("Germany"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }

答案 1 :(得分:2)

使用java.util.Properties从文件中写入和读取:

Properties p = new Properties();
p.setProperty("Australia", "Canberra");
p.setProperty("Germany", "Berlin");

File f = new File("my.properties");
FileOutputStream fos = new FileOutputStream(f);
p.store(fos, "my properties");

使用p.load()从文件和p.getProperty()读取它们,以便在加载后查询它们。

答案 2 :(得分:0)

创建属性文件(如file.properties):

INDIA=Delhi.
Australia=Canberra.
Germany=Berlin.

然后在代码中:

public static void main(String[] args) {
            Properties prop = new Properties();
            try {
                    prop.load(new FileInputStream("file.properties"));
                    String value= prop.getProperty("INDIA");
                    ...

            } catch (Exception e) {
            }
    }

答案 3 :(得分:0)

你看过Spring configuration了吗?这样你就可以/在config中创建一个map并为每个键存储对象定义。 e.g。

   <map>
      <entry key="India" value="Delhi">
   </map>

您正在谈论业务规则,但目前您只是存储一个键/值对。如果这些规则变得更复杂,那么简单的键/值对就不够了。所以也许你需要这样的东西:

   Map<String, Country>

在您的代码中,Country是(现在)首都的对象,但将来它将包含(比方说)位置,国际电话号码前缀或税收规则等。在Spring中它会类似于:

  <map>
      <entry key="India" ref="india"/>
  </map>

  <!-- create a subclass of Country -->
  <bean id="india" class="com.example.India">

我意识到这比其他建议要复杂得多。但是,既然你在谈论规则,我怀疑你会想要配置/定义某种行为。您可以使用属性(或类似)执行此操作,但可能最终会为规则的不同行为方面设置不同的属性集。这很快成为真正的维护噩梦。