类hashSet : a.实现Set接口, 底层由哈希表(实际上是一个hashMap实例)支持
b.set的迭代顺序不能保证永久不变,此类允许使用null元素,并且元素不可重复
c.遍历方式:toArray iterator
d.此类实现不是同步,所以不安全
/** hashSet 两种遍历方式
hashSet<Sting>和hashset<Person> 的区别
hashSet<String> ,String引用类型是官方定义的,所有它可以应用hashSet的所有方法.
hashset<Person> ,Person类型时通过add()增加元素时,会出现重复元素,这是就不符合set 的迭代的元素不可重复,通过重写person类里的hashcode()和equals()*/
public class Test{
public class void main(String[] args){
HashSet<String> h=new HashSet<String>();
boolean b1=h.add("I");
boolean b2=h.add("Love");
boolean b3=h.add("You");
boolean b4=h.add("I");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
System.out.println("=========================1");
//遍历方式toArray()
Object[] ob=h.toArray();
for(int i=0;i<ob.length;i++){
Object obj=ob[i];
String str=(String) obj;
System.out.print(str+" ");
}
//另外一种遍历方式
Iterator io=ha.iterator();
while(io.hasNext()){
System.out.print(io.next()+" ");
}
System.out.println();
System.out.println("=================================================");
HashSet<Person> ha=new HashSet<Person>();
Person p1=new Person("张三",19);
Person p2=new Person("张三",19);
Person p3=new Person("张三",18);
Person p4=new Person("张三",17);
Person p5=new Person("李四",19);
Person p7=new Person("李四",14);
ha.add(p1);
ha.add(p2);
ha.add(p3);
ha.add(p4);
ha.add(p5);
ha.add(p7);
//遍历集合
Object[] ob=ha.toArray();
for(int i=0;i<ob.length;i++){
Object obj=ob[i];
String str=(String) obj;
System.out.print(str+" ");
}
System.out.println();
//遍历集合
Iterator io=ha.iterator();
while(io.hasNext()){
System.out.println(io.next());
}
}
}
//Person类型时通过add()增加元素时,会出现重复元素,这是就不符合set 的迭代的元素不可重复,通过重写person类里的hashcode()和equals()
public class Person {
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public String toString(){
return "名字"+this.name+"年龄"+this.age;
}
//重写hashCode方法
public int hashCode(){
return 0;
}
//重写equals方法
public boolean equals(Object p){
if(this==p){
return true;
}
if(p instanceof Person){
Person p1=(Person) p;
if((null!=p1.name)&&(this.name==p1.name)){
if(this.age==p1.age){
return true;
}
return false;
}
return false;
}
return false;
}