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.
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");
Closest you can do is use a `Map and create a method for that
public static void addToMap(Map<String, String[]> map, String key, String...values) {
map.put(key, values);
}
See this question. Basically you need to do the following:
hm.put("Zara", new String[]{"Pony", "Cars", "Magic"});
Or if you want to declare it separetely:
String[] zaraValues = new String[]{"Pony", "Cars", "Magic"};
hm.put("Zara", zaraValues);
You might be looking for this:
HashMap<String, List<String>> hm = new HashMap<>();
hm.put("Zara", Arrays.asList("Pony", "Cars", "Magic"));
hm.put("John", Arrays.asList("Horse", "Flying", "Loving"));