JAVA HashSet集合的方法

 HashSet是set接口的实现类:

     HashSet类是Set接口的典型实现类不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变

      它们的hashCode()方法返回值不相等, HashSet将会把它们存储在不同的位置, 依然可以添加成功。

     HashSet不是同步的

     方法摘要

      add(E e)

      如果此 set 中尚未包含指定元素,则添加指定元素。

      clear()

      从此 set 中移除所有元素。

      clone()

      返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。

      contains(Object o)

       如果此 set 包含指定元素,则返回 true。

      isEmpty()

      如果此 set 不包含任何元素,则返回 true。

      Iterator iterator()

      返回对此 set 中元素进行迭代的迭代器。

      remove(Object o)

      如果指定元素存在于此 set 中,则将其移除。

      size()

      返回此 set 中的元素的数量(set 的容量)。

 

代码:

import java.util.HashSet;

import java.util.Iterator;

 

public class myHSetClass {

 public static void main(String[]args){

    

 

    HashSet hset=new HashSet();

    //add()hist集合添加自定义对象元素

    hset.add(new Person(1,"A1"));

    hset.add(new Person(2,"A2"));

    hset.add(new Person(3,"A3"));

    hset.add(new Person(4,"A4"));

    hset.add(new Person(4,"A4"));

    //  返回对此 set 中元素进行迭代的迭代器

    Iterator it=hset.iterator();

    //

    while(it.hasNext()){

       Person p=(Person)it.next();

       //打印集合集合里的元素

       System.out.println(p.getAger()+","+p.getName());

    }

  

    //size 获取元素个数         

    System.out.println("HashSet的元素格个数:"+hset.size());

    //contains判断 HashSet中是否包含某个元素         

    System.out.println("HashSet中是否包含某个元素:"+hset.contains(new Person(4,"A4")));

    //remove 删除对象

    System.out.println("是否删除成功:"+ hset.remove(new Person(1,"A1")));

    System.out.println("删除后的集合");

    //删除后的集合

    while(it.hasNext()){

       Person p=(Person)it.next();

       //打印集合集合里的元素

       System.out.println(p.getAger()+","+p.getName());

    }

 }

}

class Person{

   private String name;

   private int age;

   //创建添加元素构造器

   Person(int age,String name){

      this.name=name;

      this.age=age;

   }

   public String getName(){

      return name;

   }

   public int getAger(){

      return age;

   }

   public int hashCode(){

  

      System.out.println(this.name+"....hasCode");

      //4是为了尽量保证哈希值的唯一

      return name.hashCode()+age*4;

   }

   public boolean equals(Object obj){

      //判断哈希值是否相同

      if(!(obj instanceof Person)){

         return false;

      }

      //

         Person p=(Person)obj;   

         //打印比较次数

         System.out.println(this.name+"...equals.."+p.name);

         return this.name.equals(p.name) && this.age==p.age;

   }

}

效果:

JAVA HashSet集合的方法_第1张图片

说明:HashSet判断元素是否相等的依据:对象的equals()比较返回false;且hashCode值不 相等,

判断两个元素不相等,无论添加,删除操作时都是先判断哈希值是否相同如果哈希值不同再调用equals方法判断值是否相同。

但是它们的hashCode()方法返回值不相等, HashSet将会把它们存储在不同的位置,依然可以添加成功。

你可能感兴趣的:(JAVA HashSet集合的方法)