add
boolean add(E e)
如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向该 set 中添加指定的元素 e。如果此 set 已经包含该元素,则该调用不改变此 set 并返回 false。结合构造方法上的限制,这就可以确保 set 永远不包含重复的元素。
上述规定并未暗示 set 必须接受所有元素;set 可以拒绝添加任意特定的元素,包括 null,并抛出异常,这与 Collection.add 规范中所描述的一样。每个 set 实现应该明确地记录对其可能包含元素的所有限制。
指定者:
接口 Collection
参数:
e - 要添加到 set 中的元素
返回:
如果 set 尚未包含指定的元素,则返回 true
抛出:
UnsupportedOperationException - 如果此 set 不支持 add 操作
ClassCastException - 如果指定元素的类不允许它添加到此 set
NullPointerException - 如果指定的元素为 null 并且此 set 不允许 null 元素
IllegalArgumentException - 如果指定元素的某些属性不允许它添加到此 set
转自api说明
set可以理解为一个容器,add()是其中的一个方法,就是往容器中添加元素的方法。
HashSet比较两个对象是否相同的机制是1.hash2.==3.equals()第一步就是比较两个对象的hash值是否相同(注意这里的hash值是经过处理的,为了使散列更均匀)hash值相同的就会散列到一组不相同就会散列到不同的组(此时就不会再继续比较了,因为在不同组hashset认为他们就是不同的对象)第二步如果hash值相同则进行连等判断即比较内存地址是否相同如果不相同那么hashset就认为他们肯定不是相同的对象如果内存地址相等(这一步最主要的目的其实就是删除元素的时候判断)那么进行第三步第三步如果equals返回相同那么他们就是彻彻底底的相同的对象不能添加到set里,如果返回不同那么他们就不是彻底的不相同就可以添加到一个set里楼主明白了吧,纯手打,希望对你有帮助
set一定是个对象,add是set对象的一个参数,add()是调用set对象的一个方法
importjava.text.DateFormat;importjava.util.Date;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;publicclasstest{staticclassStudent{Stringname;intage;publicStudent(){}publicStudent(Stringname,intage){this.name=name;this.age=age;}publicinthashCode(){return1000;}publicbooleanequals(Objecto){returntrue;}publicstaticvoidmain(Stringargs[]){Setset=newHashSet();Students1=newStudent("zhangsan",20);Students2=newStudent("lisi",21);System.out.println(s1.equals(s2));set.add(s1);set.add(s2);Iteratorit=set.iterator();while(it.hasNext()){Students=(Student)it.next();System.out.println(s.name);}}}}把代码改了一下这下运行一下你该明白了运行结果是truezhangsan