Java 8 Lambda Stream forEach с несколькими операторами

Как объясняют другие, это опасно.

Способ избежать этого состоит в том, чтобы иметь константное поле, явно указывающее на хэш в ваших изменяемых объектах (так что вы бы хэш на их «идентичности», а не их "государство"). Вы даже можете инициализировать это поле хэша более или менее случайным образом.

Другим трюком будет использование адреса, например. (intptr_t) reinterpret_cast<void*>(this) в качестве основы для хэша.

Во всех случаях вам нужно отказаться от хэширования изменяющегося состояния объекта.

37
задан Reddy 30 June 2015 в 05:55
поделиться