Size: a a a

%d мобильных разработчиков со стальными нервами

2020 August 08

Н

Никита 🙃 in %d мобильных разработчиков со стальными нервами
Ну... Переопределив hashCode()
источник

QH

Quantum Harmonizer in %d мобильных разработчиков со стальными нервами
Ну блин, реализовать хэш-код не просто, а очень просто:
return Arrays.asList(field1, field2, field3, …).hashCode()
источник

Н

Никита 🙃 in %d мобильных разработчиков со стальными нервами
Quantum Harmonizer
Ну блин, реализовать хэш-код не просто, а очень просто:
return Arrays.asList(field1, field2, field3, …).hashCode()
О, никогда не думал о таком способе 😳
источник
2020 August 09

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
Quantum Harmonizer
Ну блин, реализовать хэш-код не просто, а очень просто:
return Arrays.asList(field1, field2, field3, …).hashCode()
Это не в джаве 8 такое появилось?
источник

QH

Quantum Harmonizer in %d мобильных разработчиков со стальными нервами
Alexey Pushkarev
Это не в джаве 8 такое появилось?
🤦‍♂
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
?
источник

QH

Quantum Harmonizer in %d мобильных разработчиков со стальными нервами
источник

T

Tishka17 in %d мобильных разработчиков со стальными нервами
Никита 🙃
Иногда надо сравнивать или брать хеш не всех полей
А в питоне просто пишешь

@dataclass(unsafe_hash=True)
class A:
  field1: str = field(hash=False)
  field2: int
...
источник

Н

Никита 🙃 in %d мобильных разработчиков со стальными нервами
Удобно 🧐
источник

T

Tishka17 in %d мобильных разработчиков со стальными нервами
Ну или вместо unsafe_hash лучше конечно frozen
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
asList то понятно. Такое юзал. Но ты получается тогда используешь хэшкод у класса лист, а там хэшкод не реализован правильно
источник

T

Tishka17 in %d мобильных разработчиков со стальными нервами
Alexey Pushkarev
asList то понятно. Такое юзал. Но ты получается тогда используешь хэшкод у класса лист, а там хэшкод не реализован правильно
Что значит "правильно"?
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
Tishka17
Что значит "правильно"?
так чтобы считал хэш от каждого поля
источник

T

Tishka17 in %d мобильных разработчиков со стальными нервами
Эм. Хэш листа не считает хэш от содержимого?
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
вот не уверен. А если там милиард элементов, то это же будет оч не эффективно
источник

T

Tishka17 in %d мобильных разработчиков со стальными нервами
У нас в питоне лист вообще не хэшируемый, потому что мутабельный
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
а нет
источник

QH

Quantum Harmonizer in %d мобильных разработчиков со стальными нервами
Alexey Pushkarev
asList то понятно. Такое юзал. Но ты получается тогда используешь хэшкод у класса лист, а там хэшкод не реализован правильно
всё там реализовано. А каждое поле как раз и передаёшь в asList.
источник

AP

Alexey Pushkarev in %d мобильных разработчиков со стальными нервами
Tishka17
У нас в питоне лист вообще не хэшируемый, потому что мутабельный
он действительно считает хэш каждого https://docs.oracle.com/javase/8/docs/api/java/util/List.html#hashCode--
источник

DS

Daniil S in %d мобильных разработчиков со стальными нервами
Alexey Pushkarev
он действительно считает хэш каждого https://docs.oracle.com/javase/8/docs/api/java/util/List.html#hashCode--
for (E e : list)
        hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
источник