Первое, что нужно сначала - я полностью согласен и +1 @TheLostMind ответ выше относительно LinkedHashset. Кроме того, вам, вероятно, не хватает понимания того, что метод .add() фактически возвращает i.e, что он проверяет, прежде чем возвращать вам логический результат.
P.S. Это один из стандартов в JavaBeans, что вы должны переопределить хэш-код() и Equals(), чтобы избежать ошибочных результатов - см http://www.xyzws.com/javafaq/why-always-override-hashcode-if-overriding-equals/20
Помните, что вы используете HashSet и HashSet в equals()
и hashCode()
методы наследуются от AbstractSet. AbstractSet - это абстрактный класс, и HashSet расширяет его, и нет необходимости внедрять абстрактные методы. Поскольку equals() и hashCode() уже реализованы, результат, который вы видите для кода ниже, выглядит как true и false. Я разделил их с помощью области действия {}
для улучшения ясности.
public static void main (String[] args) throws java.lang.Exception
{
{ boolean[] b = new boolean[5];
Set s = new HashSet();
b[0]=s.add(new Integer(2));
b[1]=s.add(new Integer(2));
System.out.println("Using Hashset Integers b0 = "+b[0]+" and b1 = "+b[1]);
}
{
boolean[] b=new boolean[5];
Set s=new HashSet();
b[0]=s.add(2);
b[1]=s.add(2);
System.out.println("Using Hashset int b0 = "+b[0]+" and b1 = "+b[1]);
}
}
Я считаю, что для int
и Integer
хэш-код() и Equals() являются alrady отсортированы по Java. Тебе не нужно об этом беспокоиться. Я применил dataserver с использованием Spring Framework, где мне нужен мой собственный класс сущностей, и чтобы я мог сохранить объекты Entity bean в HashMap, мне пришлось переопределить equals() и hashCode() в моем классе определения Entity. Если вы используете Eclipse, вы можете использовать автогенератор, чтобы дать вам скелет hashCode() и equals(), который затем можно редактировать в соответствии с вашими потребностями.
'String' переопределяет' hashCode'. – arshajii
СПАСИБО TON Folks :) Я получил его –