Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / какой бы придумать хеш-код ?? / 14 сообщений из 14, страница 1 из 1
09.01.2012, 13:14:37
    #37606407
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какой бы придумать хеш-код ??
есть класс типа такого

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



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

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

Чем не устраивает стандартный (в мире Java) подход?
...
Рейтинг: 0 / 0
09.01.2012, 16:12:50
    #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
09.01.2012, 17:38:49
    #37606622
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какой бы придумать хеш-код ??
Leonidvnxx,

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

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

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

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

да, забыл упомянуть
именно ради equals всё и нужно
т.к. equals будет по значениям обоих листов
поэтому и стандартный хеш не подходит
т.к. если два объекта равны в смысле equals - хеш уже не может для них отличаться
поэтому хеш должен быть основан на значениях обоих листов
а там могут быть объекты любых типов
...
Рейтинг: 0 / 0
09.01.2012, 18:04:48
    #37606654
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какой бы придумать хеш-код ??
schwa hash collision ddos
ну это вас не в ту степь потянуло
...
Рейтинг: 0 / 0
09.01.2012, 18:14:19
    #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
09.01.2012, 18:16:55
    #37606671
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какой бы придумать хеш-код ??
schwa hash collision ddos
Спасибо, интересно. Но к теме отношения не имеет тоже.
...
Рейтинг: 0 / 0
09.01.2012, 20:48:07
    #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
10.01.2012, 09:18:02
    #37607126
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какой бы придумать хеш-код ??
Добрый день, nxx!
> class C {
> public ArrayList<Object> a1, a2;
> }
> какой бы для него придумать хеш-код ?

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

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


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