A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 剑魂 中级黑马   /  2013-11-18 00:46  /  1056 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set集合中的元素是不能重复的,那什么方法区分,是==还是equals?

3 个回复

倒序浏览
如果不是对象应该使用的是 字符串的方法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;
}
上面是一个例子,先比较年龄,再比较字符串,这样就可能用自己想要的方式去比较了

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
Set集合中有两个子类HashSet和TreeSet;
HashSet保证元素唯一性是通过元素的两个方法hashCode和equals来完成的,如果元素的hashCode值相同才会判断equals是否为true,如果元素的hashCode值不同,则不会调用equals方法。
TreeSet保证元素唯一性的依据是compareTo方法return 0.
回复 使用道具 举报

Set有HashSet和TreeSet子类;
HashSet保证元素唯一性是通过元素的两个方法hashCode和equals来判断的,如果元素的hashCode值相同才会判断equals是否为true,如果元素的hashCode值不同,则不会调用equals方法。
TreeSet保证元素唯一性的是通过实现CompareTo接口实现Compare方法或者传入自定义的比较器Comparable.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马