Является ли функция hashCode, сгенерированная Eclipse, хорошей?

В исходном меню Eclipse есть «метод генерации hashCode / equals», который генерирует функции, подобные приведенной ниже.

String name; 
@Override
public int hashCode()
{
    final int prime = 31;
    int result = 1;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
}

@Override
public boolean equals(Object obj)
{
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    CompanyRole other = (CompanyRole) obj;
    if (name == null)
    {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    return true;
}

Если я выбираю несколько полей при создании hashCode()и equals(), Eclipse использует тот же шаблон, что и выше.

Я не эксперт по хеш-функциям и хотел бы знать, насколько «хороша» сгенерированная хеш-функция? Каковы ситуации, когда он сломается и вызовет слишком много столкновений?

31
задан S.L. Barth - Reinstate Monica 3 August 2012 в 12:18
поделиться