Мне сказали изменить все на HashMap () вместо ArrayList (), и по большей части все работало идеально. Однако у меня возникла проблема с тем, чтобы этот метод работал правильно.
мой HashMap () выглядит как
private HashMap critMap = new HashMap ();
У меня есть класс комнаты и класс существа, в котором могут быть существа. Существа должны быть в состоянии реагировать на определенные команды, для которых у меня уже есть методы, и они должны работать, пока этот метод правильный. Я не уверен, что не так.
Это метод с ArrayList ()
public void critReactRoomStateChange2(String command, PC pc, String name) {
Creature temp = null;
for (int i = 0; i < critArr.size(); i++) {
if (!(getCreatures().get(i) instanceof PC) && !(getCreatures().get(i).getName().equals(name))) {
temp = getCreatures().get(i);
if (temp != null) {
getCreatures().get(i).reactStateChange(command, pc);
temp.checkNewRoom();
if (!temp.equals(getCreatures().get(i))) {
i--;
}
}
}
}
}
ЭТО МЕТОД ПОСЛЕ ТОГО, ЧТО Я УСТАЛ ДЛЯ РЕАЛИЗАЦИИ HashMap ()
public void critReactRoomStateChange(String command, PC pc, String name) {
Creature temp = null;
if (!(getCreatures().get(name) instanceof PC)) {
temp = getCreatures().get(name);
if (temp != null) {
getCreatures().get(name).reactStateChange(command, pc);
temp.checkNewRoom();
}
}
}
getCreatures (). Get (name) принимает имя String, которое передается ему, в качестве ключа hashMap, чтобы найти фактический объект, на который он ссылается. Как указано выше, мой hashMap - это, следовательно, имя существа - это строка (ключ), а значение Creature (содержит другую информацию, кроме имени) - это значение. Когда я вызываю getCreature (). Get (name), я ищу имя ключевой строки и хочу, чтобы оно возвращало объект Creature. Если он не может найти его в hashMap, он должен вернуть ноль, если я не ошибаюсь.
Возможно, я просто упускаю что-то действительно простое. Любая помощь будет принята с благодарностью. Если потребуется больше кода, я с радостью отредактирую его и вставлю.
Спасибо
Редактировать: Класс существа является абстрактным и PC, Animal, NPC все расширяют его. Просто вам не интересно, что делают случайные ПК, NPC и Животные. лол
Edit2: нет ошибок, кроме того, что я не получаю реакции. Он ничего не делает, так что critReactRoomStateChange сейчас не работает. Существа не проходят мимо, поэтому другие методы могут воздействовать на них.
Таким образом, 2-й блок кода не работает должным образом. Это ничего не делает по существу.