I'm having a HashMap in my Java program consisting of around 200 -Key-Value-pairs which won't change during runtime and I am looking for a good way to initialize all the pairs. Currently I have a hard-coded method like this
private void initializeHashMap(){
hashMap.put(1, "String1");
hashMap.put(2, "String2");
hashMap.put(3, "String3");
...}
for all the 200 pairs. Is that really good practice or is there another, better way maybe to read the data from another class or an external file?
This is the perfect use case to consider a properties file. When you read the file, it gives you a handy map to play with it.
An alternative which is worse in terms of readability but better in terms of concision (that I'll employ in personal projects but avoid in team work) would be to use an anonymous class that defines its key/values at instanciation :
Map<Integer,String> myMap = new HashMap<Integer,String>(){{
this.put(1, "String1");
this.put(2, "String2");
}};
Now you're not instantiating an HashMap
anymore but an anonymous class that extends it. This anonymous class' definition contains an instance initializer block that will be executed after the constructor and will set up the desired key/values.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With