Дубликат ключа в HashMap в JSP

В последних версиях разработки нет необходимости переопределять контроллер сеансов, вместо этого вы можете просто использовать:

config.sign_out_all_scopes = false

В файле devise.rb для получения желаемого поведения.

0
задан Sean2148 17 March 2019 в 23:52
поделиться

1 ответ

Вероятно, вам потребуется реализовать метод hashCode в классе Product.

По умолчанию реализация hashCode возвращает местоположение объекта в памяти. Результатом метода hashCode объекта является то, что используется HashMap для идентификации объекта.

В этом случае каждый раз, когда Product извлекается из базы данных с использованием db.getProduct(pid), его местоположение в памяти, вероятно, отличается.

Из-за этого вызов, который HashMap использует для поиска, если существует Product, отличается, и поэтому объект снова добавляется в HashMap.

Чтобы избежать этого, в Product должны быть реализованы методы hashCode и equals. В вашем случае использование чего-то уникального, например ProductID (pid), имеет смысл:

// Assuming pid is public
public int hashCode() {
  return this.pid;
}

public equals(Object object) {
  return this.pid == ((Product)object).pid;
}

Для получения дополнительной информации о том, как реализовать более надежный hashCode, см. https: // stackoverflow. ком / а / 113600/9129020

0
ответ дан jvandoorn 17 March 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: