类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());
                        }

                

    }

}

关于 类hashSet<E> hashSet 遍历 hashSet<String>和hashSet<Person>



//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;
            }




   

        

相关文章: