通过实例学习Java集合框架HashSet

  

这篇文章主要介绍了通过实例学习Java集合框架HashSet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

<强>示例1:元素不能重复

  

中设置的元素,不能重复

        包集合;      进口java.util.HashSet;      公开课TestCollection {   公共静态void main (String [] args) {      HashSet名称=new HashSet ();      names.add (“gareen”);      System.out.println(名称);//第二次插入同样的数据,是插不进去的,容器中只会保留一个   names.add (“gareen”);   System.out.println(名称);   }   }      

<强>示例2:没有顺序

  

中设置的元素,没有顺序。
  

  

严格的说,是没有按照元素的插入顺序排列

  

HashSet的具体顺序,既不是按照插入顺序,也不是按照hashcode的顺序。

  

以下是HashSet源代码中的部分注释

     /* *   *没有担保的迭代顺序设置;   *特别是,它并不保证订单将随时间保持不变。   */      

不保证组的迭代顺序;确切的说,在不同条件下,元素的顺序都有可能不一样

  

换句话说,同样是插入0 - 9到HashSet中,在JVM的不同版本中,看到的顺序都是不一样的,所以在开发的时候,不能依赖于某种臆测的顺序,这个顺序本身是不稳定的
  

  

通过实例学习Java集合框架HashSet

        包集合;   进口java.util.HashSet;   公开课TestCollection {   公共静态void main (String [] args) {   HashSet数量=new HashSet ();      numbers.add (9);   numbers.add (5);   numbers.add (1);//设置中的元素排列,不是按照插入顺序   System.out.println(数字);      }   }      

<强>示例3:遍历

  

设置不提供get()来获取指定位置的元素
  

  

所以遍历需要用到迭代器,或者增强型的循环

        包集合;      进口java.util.HashSet;   进口java.util.Iterator;      公开课TestCollection {   公共静态void main (String [] args) {   HashSet数量=new HashSet ();      for (int i=0;我& lt;20;我+ +){   numbers.add(我);   }//设置不提供得到方法来获取指定位置的元素//numbers.get (0)//遍历集合可以采用迭代器迭代器   (Iterator迭代器=numbers.iterator ();iterator.hasNext ();) {   整数i=(整数)iterator.next ();   System.out.println(我);   }//或者采用增强型的循环   (整数我:数字){   System.out.println(我);   }      }   }      

<强>示例4:HashSet和HashMap的关系

  

通过观察HashSet的源代码,
  

  

可以发现HashSet自身并没有独立的实现,而是在里面封装了一个地图。
  

  

HashSet是作为映射的键而存在的
  

  

而价值是一个命名为当前的静态的对象对象,因为是一个类属性,所以只会有一个。

        私有静态最终对象现在=新对象();   包集合;      进口java.util.AbstractSet;   进口java.util.HashMap;   进口java.util.Iterator;   进口java.util.Set;      公开课HashSet   扩展AbstractSet   可克隆,实现Set地图;      私有静态最终对象现在=新对象();//HashSet的构造方法初始化这个HashMap   公共HashSet () {   地图=new HashMap ();   }//向HashSet中增加元素,其实就是把该元素作为关键,增加到地图中//值是,静态、最终的对象,所有的HashSet都使用这么同一个对象   公共逻辑加(E E) {   返回地图。把(e)==零;   }//HashSet的大小就是地图的大小   公共int大小(){   返回map.size ();   }//清就空集是清空地图   公共空间clear () {   map.clear ();   }//迭代集,就是把映射的键拿出来迭代   公共Iteratoriterator () {   .iterator返回map.keySet () ();   }      }      

练习:HashSet

  

创建一个长度是100的字符串数组
  

  

使用长度是2的随机字符填充该字符串数组

通过实例学习Java集合框架HashSet