您能否建议如何在java中创建(key,value1,value2)文件,类似于(key,value)属性文件。任何开源项目都使用这种类型的文件。
Thanksyou。
答案 0 :(得分:6)
您可以使用分隔符:
props.put(key, value1 + DELIMITER + value2);
您也可以使用密钥后缀:
props.put(key + "1", value1);
props.put(key + "2", value2);
答案 1 :(得分:4)
你也可以使用apache commons集合包,它有一个方便的MultiValue map实现。 有关详细信息,请参阅Javadoc
答案 2 :(得分:4)
Commons Configuration的PropertiesConfiguration类支持单个键的多个值。
有关示例,请参阅here。
答案 3 :(得分:1)
考虑multi-valued
属性文件。 Properties
类从Hashtable扩展。您可以创建一个使用Hashtable<String, String[]>
获取java/utils/Properties.java的源代码并进行相应修改。
以下是您的属性文件的外观:
key1 = value
key2 = value_1
key2 = value_2
key3 = my_value_3
答案 4 :(得分:1)
您可以扩展Map界面,例如:
public class Multimap<K, V> extends HashMap<K, V[]> {
@Override
public V[] put(K key, V...value) {
return super.put(key, value);
}
}
然后
Multimap<String,String> mapStr = new Multimap<String, String>();
mapStr.put("key1", "value1", "value2");
System.out.println("Strings: key1 = " + Arrays.toString( mapStr.get("key1") ) );
Multimap<String,Integer> mapInt = new Multimap<String, Integer>();
mapInt.put("key1", 1, 2);
System.out.println("Integers: key1 = " + Arrays.toString( mapInt.get("key1") ) );
会产生
Strings: key1 = [value1, value2]
Integers: key1 = [1, 2]
答案 5 :(得分:1)
您也可以尝试这样的事情。
prop1 = one
prop2 =two
#prop12 is a multivalued property.values are the combination of prop1 and prop2
prop12= prop1,prop2
假设属性文件包含这样的条目。
public class MVProperties extends Properties{
public List<String> getMultiValuedProperty(String key){
List<String> values = null;
String[] references = getProperty(key,"").split(",");
if(references.length == 0){
return values;
}
values = new ArrayList<String>();
for(String ref:references){
values.add(getProperty(ref));
}
return values;
}
}
答案 6 :(得分:0)
使用(键,值[])代替
答案 7 :(得分:0)
已经提出了最简单的方法 - 如果你正在寻找一种方法来修改一个实现Map接口的类来接受2个值而不是1个,那么要小心。 Map接口有很多方法,如果你尝试这种方法可能会以意想不到的方式运行 - 它可以完成它的工作量远远超过它的价值:)