//HashSet基于HashMap实现的,利用了HashMap键不能重复的特点;不可以排序
创建一个HashSet对象: HashSet set = new HashSet;
//TreeSet可以排序(根据内容进行排序) 可以对数字和字符串进行排序,因为实现Comparable接口
Comparable接口 如果接口中方法返回0 表示相等~~~
创建一个TreeSet对象: TreeSet set = new TreeSet;
//如何判断重复元素~~~~
1.只要obj == obj1 认为obj与obj1是相同的元素(地址相等~)
2.equals 与 hashCode 同时相等的时候,认为是相同的元素
代码:
class Person implements Comparable{
String name;
int age;
@Override //自定义输出的时候
public String toString() {
return "name = " + this.name +" "+ "age = " + age;
}
@Override//自定义相等的规则
public boolean equals(Object obj) {
//如果类型不相同 返回false
if (!(obj instanceof Person)){
return false;
}
//如果名字一样 返回true
if (((Person) obj).name.equals(this.name)) {
return true;
}
//如果名字不相同 返回false
return false;
}
//hashCode
@Override //计算一个对象的hash值
public int hashCode() {
return this.name.hashCode();
}
//实现Comparable 接口
@Override
public int compareTo(Object o) {
//防止程序崩溃
if (o instanceof Person) {
Person p = (Person)o;
if (this.age > p.age) {//大
return 1;
}else if (this.age == p.age) {//相等
return 0;
}else {//小
return -1;
}
}
return 0;
}
}
网友评论