本帖最后由 聂益飞 于 2013-3-26 19:35 编辑
- class Person {
- private String name;
- private int age;
- public Person() {
- }
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public int hashCode()
- {
- return this.name.hashCode()+this.age*17;
- }
- public boolean equals(Object obj)
- {
- if(this == obj)
- {
- return true;
- }
- if(!(obj instanceof Person))
- {
- return false;
- }
- Person p = (Person)obj;
- return this.name.equals(p.name)&&this.age == p.age;
- }
- }
复制代码 如上代码!!我想问的是!为什么HashSet集合在保证元素唯一性时,覆写的是对象的HashCode和equals方法,而不在其他地方覆写这两种方法,TreeSet的CompareTo方法同理!这样的话如果我要用set集合去存储已存在对象时不是要跑到对象里面去改源码???对于这种问题有解决办法吗?? |