Can an array be used as a HashMap key?
arrays, hashmap, java, key
Solution
It will have to be the same object. A `HashMap` compares keys using `equals()` and two arrays in Java are equal only if they are the same object.
If you want value equality, then write your own container class that wraps a `String[]` and provides the appropriate semantics for `equals()` and `hashCode()`. In this case, it would be best to make the container immutable, as changing the hash code for an object plays havoc with the hash-based container classes.
EDIT
As others have pointed out, `List<String>` has the semantics you seem to want for a container object. So you could do something like this:
HashMap<List<String>, String> pathMap;
pathMap.put(
// unmodifiable so key cannot change hash code
Collections.unmodifiableList(Arrays.asList("korey", "docs")),
"/home/korey/docs"
);
// later:
String dir = pathMap.get(Arrays.asList("korey", "docs"));
Problem
If a `HashMap`'s key is a `String[]` array: ``` HashMap<String[], String> pathMap; ``` Can you access the map by using a newly created `String[]` array, or does it have to be the same `String[]` object? ``` pathMap = new HashMap<>(new String[]{"korey", "docs"}, "/home/korey/docs"); String path = pathMap.get(new String[]{"korey", "docs"}); ```