Il semble que Java.util.Properties suppose une valeur par clé de propriété. C'est,
foo=1
foo=2
n'est pas prévu,
Existe-t-il une classe pour ce type de feuille de propriétés à valeurs multiples, qui fournit également la méthode de chargement?
Essayer:
foo=1,2
String[] foos = properties.getProperty("foo").split(",");
La fonction Java.util.Properties est assez limitée. Si vous voulez une liste de support, vous pouvez essayer PropertyConfiguration d'Apache Commons Configuration,
Avec celui-ci, vous pouvez définir tous les délimiteurs de votre liste et la division se fera automatiquement pour vous. Vous pouvez également faire d'autres choses fantaisistes dans le fichier de propriétés. Par exemple,
foo=item1, item2
bar=${foo}, item3
number=123
Vous pouvez le récupérer comme ça,
Configuration config = new PropertiesConfiguration("your.properties");
String[] items = config.getStringArray("bar"); // return {"item1", "item2", "item3"}
int number = config.getInt("number", 456); // 456 is default value
Réponse correcte par Nick.
Ou, si vous pouvez attribuer un sous-nom différent à chaque valeur, vos propriétés peuvent être:
my.properties
foo.title=Foo
foo.description=This a big fat foo.
Cela ne fournira pas la méthode de chargement mais un endroit pour les stocker, vous pouvez utiliser un multivaluemap commun à Apache:
"Une carte MultiValue décore une autre carte, ce qui lui permet d’avoir plus d’une valeur pour une clé."
C'est souvent une exigence pour les paramètres de requête http ...
http://commons.Apache.org/collections/apidocs/org/Apache/commons/collections/map/MultiValueMap.html
Si vous avez un exemple plus complexe, vous pouvez utiliser les éléments suivants:
# pairs of properties
source1=foo
target1=bar
source2=anotherFoo
target2=regardingBar
source3= ...
Dans votre code, vous devrez chercher:
Map<String, String> myMap = new HashMap<>();
for (int i=1; i<max; i++) {
String source = properties.get("source" + i);
String target = properties.get("target" + i);
if (source == null || target == null) {
break;
}
myMap.put(source, target);
}
Inconvénient: mettre à jour le fichier de propriétés. Si vous supprimez les valeurs * 2, toutes les valeurs suivantes ne seront pas ajoutées. Pour améliorer, vous voudrez peut-être remplacer la pause par un continue et vous en tenir au maximum des paires autorisées.