powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / какой бы придумать хеш-код ??
14 сообщений из 14, страница 1 из 1
какой бы придумать хеш-код ??
    #37606407
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть класс типа такого

Код: java
1.
2.
3.
class C {
public ArrayList<Object> a1, a2;
}



какой бы для него придумать хеш-код ?
для public int hashCode()

чем ближе к уникальности тем лучше
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606449
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nxx,

Чем не устраивает стандартный (в мире Java) подход?
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606570
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nxx,
Код: java
1.
java.util.Arrays.hashCode(Object[] a);


если хэш код будет генерироваться на базе полей a1, a2, то нельзя забывать про условия Object
особо обрати внимание на
Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer
Также не забудь, что помимо hashCode() скорее всего придётся переопределить ещё и equals()
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606622
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvnxx,

Чем не устраивает стандартный (в мире Java) подход?

какой ?
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606623
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvnxx,

Чем не устраивает стандартный (в мире Java) подход?
Сейчас весь интернет бурлит на тему хэш-коллизий.
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606635
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaСейчас весь интернет бурлит на тему хэш-коллизий.
MD5 коллизий? Это совсем не из той области.
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606636
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schwa,

вы о чём?
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606642
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606644
nxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miha_S7Также не забудь, что помимо hashCode() скорее всего придётся переопределить ещё и equals()

да, забыл упомянуть
именно ради equals всё и нужно
т.к. equals будет по значениям обоих листов
поэтому и стандартный хеш не подходит
т.к. если два объекта равны в смысле equals - хеш уже не может для них отличаться
поэтому хеш должен быть основан на значениях обоих листов
а там могут быть объекты любых типов
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606654
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schwa hash collision ddos
ну это вас не в ту степь потянуло
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606663
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nxx,

java.util.Arrays вполне подходит. Что-то типа этого:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
class C {
    
    private final List<Object> a1, a2;
    
    C() {
        List<Object> l1 = new ArrayList<Object>();
        List<Object> l2 = new ArrayList<Object>();
        
        l1.add(...);
        ...
        l1.add(...);
        l2.add(...);
        ...
        l2.add(...);
    
        a1 = Collections.unmodifiableList(l1);
        a2 = Collections.unmodifiableList(l2);
    }

    public int hashCode() {

        return Arrays.hashCode(new Object[] {a1, a2});
        
    }
    
    public boolean equals(Object obj) {
        ...
    }
}
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606671
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwa hash collision ddos
Спасибо, интересно. Но к теме отношения не имеет тоже.
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37606789
Java_Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно и своих вариаций hashCode() придумать, сколько угодно, но вот NetBeans совершенной нормальный код сгенерировал:
Код: java
1.
2.
3.
4.
5.
6.
7.
    @Override
    public int hashCode() {
        int hash = 5;
        hash = 53 * hash + (this.a1 != null ? this.a1.hashCode() : 0);
        hash = 53 * hash + (this.a2 != null ? this.a2.hashCode() : 0);
        return hash;
    }
...
Рейтинг: 0 / 0
какой бы придумать хеш-код ??
    #37607126
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, nxx!
> class C {
> public ArrayList<Object> a1, a2;
> }
> какой бы для него придумать хеш-код ?

Для этого надо понимать, что там хранится. Тогда и ответ на вопрос
"когда объекты равны" будет понятен.
Возможно, придётся пересмотреть состав класса :)

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / какой бы придумать хеш-код ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]