Мне кажется, вам нужно создать свой собственный класс ключей:
public class Key {
private final String a;
private final String b;
private final String c;
public Key(String a, String b, String c) {
// initialize all fields here
}
// you need to implement equals and hashcode. Eclipse and IntelliJ can do that for you
}
Если вы реализуете свой собственный класс ключей, ваша карта будет выглядеть так:
Map<Key, String> map = new HashMap<Key, String>();
И когда вы ищете что-то на карте, вы можете использовать:
map.get(new Key("a", "b", "c"));
Приведенный выше метод не вызовет исключение NullPointerException.
Пожалуйста, помните, что для работы этого решения вам необходимо переопределить равныеи хэш-код в классе Key.Здесь есть помощь .Если вы не переопределите equals и hashcode, то новый ключ с такими же элементами не будет соответствовать существующему ключу на карте.
Существуют другие возможные решения, но реализация вашего собственного ключа довольно чистая.по-моему.Если вы не хотите использовать конструктор, вы можете инициализировать свой ключ статическим методом и использовать что-то вроде:
Key.build(a, b, c)
Это ваше дело.