HashMap <String,String... strings> hm = new HashMap<String,String... strings>();
hm.put("Zara", "Pony","Cars", "Magic");
hm.put("John", "Horse","Flying", "Loving");
How can I do that? It's not letting me.
The elipsis (...
) operator can only be used in method signatures. You could explicitly declare and create arrays:
Map<String, String[]> hm = new HashMap<>();
hm.put("Zara", new String[]{"Pony", "Cars", "Magic"});
hm.put("John", new String[]{"Horse", "Flying", "Loving"});
If you absolutely must use varags, you can wrap the call to Map#put
with your own method:
public static void main(String[] args) {
Map<String, String[]> hm = new HashMap<>();
addToMap(hm, "Zara", "Pony", "Cars", "Magic");
addToMap(hm, "John", "Horse", "Flying", "Loving");
}
private static void addToMap
(Map<String, String[]> map, String key, String... values) {
map.put(key, values);
}
Vararg notation is only for use with functions that allow it. It can not be used anywhere else.
You have to decide what you actually want your map values to be. Normally varargs is basically syntactic sugar for an array. However, a List
or Set
also makes sense here.
Either of the following would work:
Array:
HashMap <String, String[]> hm = new HashMap<>();
hm.put("Zara", new String[] {"Pony","Cars", "Magic"});
hm.put("John", new String[] {"Horse", "Flying", "Loving"});
List:
HashMap <String, List<String>> hm = new HashMap<>();
hm.put("Zara", new ArrayList<String>());
hm.get("Zara").add("Pony");
hm.get("Zara").add("Cars");
hm.get("Zara").add("Magic");
hm.put("John", new ArrayList<String>());
hm.get("John").add("Horse");
hm.get("John").add("Flying");
hm.get("John").add("Loving");
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