java中的hashset继承于AbstractSet
这个类实现了Set集合,实际为一个HashMap的实例。对集合的迭代次序没有任何保证; 特别是,它不能保证订单会随着时间的推移保持不变。这个类允许null 元素。
HashSet:HashSet是哈希表实现的。
public class hashs {
public static void main(String[] args) {
Set s=new HashSet();//按照哈希表存放地址
s.add(1);//添加元素
s.add("a");
System.out.println(s);
s.remove(1);//移除1
System.out.println(s.contains(1));//判断s里面是否有a
s.clear();//清空
s.add("a");
s.add("b");
s.add("c");
for(Object obj:s)
{
System.out.println(obj);
}
}
}
添加新元素
s.add()可以往set中添加一个新元素;
遍历:
遍历hashset用到了"Object obj:s",Object是所有类的父类,由于这里的s中的元素有字符串有Interage类,所以用Objectl来继承s中的元素是合理的。
同时也可以利用迭代器遍历it=Iterator iterator();
清空:
remove(Object s)
清空s中的所有元素
查询容器大小
Setsize(Object s);
返回s的元素个数
判断是否为空:
isEmpty(Object s)
如果此 set 不包含任何元素,则返回 true。
查询是否包含o元素
contains(Object s)
如果此 set 包含指定元素,则返回 true。
查询哈希地址
hashcode(Object s)
返回元素的哈希值。
TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类。
TreeSet:TreeSet是二叉树实现的,每添加一个元素会进行自动排序。
想要改变排序规则可以在定义类的时候定义一个接口;
通过实现comparable制定compare规则,例如:
public class student implements Comparable<student>
{
int score;
String name;
@Override
public int compareTo(student o) {
// TODO 自动生成的方法存根
if(o.score>this.score)
return 1;
else if(o.score<this.score)
return -1;
else
return 0;
}
}