Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 - Fatal编程技术网

java中的属性-我们可以使用单值逗号分隔键吗?

java中的属性-我们可以使用单值逗号分隔键吗?,java,properties,Java,Properties,我希望在java应用程序的属性文件中为单个值提供多个键(>1)。一种简单的方法是在属性文件的单独行中定义每个键,并将相同的值定义给所有这些键。这种方法提高了属性文件的可维护性。另一种方法(我认为这可能是一种聪明的方法)是用单行中的值定义逗号分隔的键。e、 g key1,key2,key3=value Java.util.properties不支持这种开箱即用的方式。以前有人做过类似的事情吗?我用谷歌搜索了一下,但什么也没找到 --manish由于java.util.Properties扩展

我希望在java应用程序的属性文件中为单个值提供多个键(>1)。一种简单的方法是在属性文件的单独行中定义每个键,并将相同的值定义给所有这些键。这种方法提高了属性文件的可维护性。另一种方法(我认为这可能是一种聪明的方法)是用单行中的值定义逗号分隔的键。e、 g

  key1,key2,key3=value
Java.util.properties不支持这种开箱即用的方式。以前有人做过类似的事情吗?我用谷歌搜索了一下,但什么也没找到


--manish

由于
java.util.Properties
扩展了
java.util.Hashtable
,您可以使用
Properties
加载数据,然后对数据进行后期处理


使用
java.util.Properties
加载数据而不是滚动自己的数据的优点是,属性的语法实际上已经支持许多有用的特性,您可能最终不得不重新实现这些特性(例如跨多行拆分值、转义等).

属性文件的优点之一是它们很简单。不需要学习复杂的语法,而且容易上手

想知道属性
foo
的值是多少吗?快速扫描左栏,直到看到“foo”

就个人而言,如果我看到这样的属性文件,我会感到困惑

如果这是您真正想要的,那么它应该易于实现。快速第一刺可能如下所示:

  • 打开文件
  • 对于每一行:
    • trim()
      whitespace
    • 如果该行为空或以#开头,请继续
    • 在“
      =
      ”(限制设置为2)上拆分,留下键和值
    • 拆分键在“
      ”上
    • 对于每个键,
      trim()
      将其删除,并将其与
      trim()
      'd值一起添加到地图中

就是这样。

我不知道有什么现有的解决方案,但它的实现应该非常简单:

String key = "key1,key2,key3", val = "value";
Map<String, String> map = new HashMap<String, String>();
for(String k : key.split(",")) map.put(k, val); 
System.out.println(map);
String key=“key1,key2,key3”,val=“value”;
Map Map=newhashmap();
对于(字符串k:key.split(“,”)map.put(k,val);
系统输出打印项次(map);

+1表示“保持简单”建议。但您推荐的实现并不是那么简单(您可以使用属性并对其进行后处理),请不要忘记属性文件遵循以下原则:Key=Value或Value=Key或两者兼而有之(即Key=Key或Value=Value)。“=”符号将两个字段分开。Apache Struts在引入LookupDispatchAction时广泛使用了此功能。刚刚考虑过添加我的2cent-worth:-)@guester:也许Struts有一些特殊的属性子类,但是常规的Java
属性就是key=value。