黑马程序员技术交流社区

标题: 关于Set集合 [打印本页]

作者: 剑魂    时间: 2013-11-18 00:46
标题: 关于Set集合
Set集合中的元素是不能重复的,那什么方法区分,是==还是equals?

作者: qw无语    时间: 2013-11-18 01:19
如果不是对象应该使用的是 字符串的方法int compareTo(String anotherString)
Integer的方法 int compareTo(Integer anotherInteger) 在数字上比较两个 Integer 对象。
查阅了下API 都有compareTo方法
如果是自己写的类,就需要复写这个方法才能比较
元素需要实现Comparable接口,覆盖compareTo方法
public int compareTo(Object obj)
{
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生对象");
                Student s = (Student)obj;
                if(this.age>s.age)
                        return 1;
                if(this.age==s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
}
上面是一个例子,先比较年龄,再比较字符串,这样就可能用自己想要的方式去比较了
作者: 松毛    时间: 2013-11-18 08:32
Set集合中有两个子类HashSet和TreeSet;
HashSet保证元素唯一性是通过元素的两个方法hashCode和equals来完成的,如果元素的hashCode值相同才会判断equals是否为true,如果元素的hashCode值不同,则不会调用equals方法。
TreeSet保证元素唯一性的依据是compareTo方法return 0.
作者: ┾——黑马    时间: 2013-11-18 08:57

Set有HashSet和TreeSet子类;
HashSet保证元素唯一性是通过元素的两个方法hashCode和equals来判断的,如果元素的hashCode值相同才会判断equals是否为true,如果元素的hashCode值不同,则不会调用equals方法。
TreeSet保证元素唯一性的是通过实现CompareTo接口实现Compare方法或者传入自定义的比较器Comparable.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2