【javaSE】HashSet和HashMap

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************

SET集合

set集合存放不重复的元素,set集合中不存在equal值为ture的元素;hashSetTreeSetset接口的常用两个实现类,分别用hash算法和排序二叉树算法来实现;例如,将100以内不重复的随机20个数写入set集合

         Set<Interger> hashset=new HashSet<Integer>();

         Random r =new Random();

         while(hashset.size()<10){

         hashset.add(r.nextInt(100));

}

set集合不同于List对象,元素不和下标进行对应,无法从Set集合中取出特定的元素,但是可以遍历整个Set集合,方式是通过iterator遍历方法,返回Iterator遍历对象;

也可以是增强型For循环,在java编译器中是等价的;

例如:

         Set<String> strset = new HashSet<String>;

         strset.add(“adb”);strset.add(“che”);

增强型for循环

         for(String str: strset){

                   system.out.println(str)

}

         迭代器为:

                   Iterator It =strset.iterator();

                   while(It.hasNext()){

                            String str=It.next();

                            system.out.println(str)

}

6.1 HashSetHashCode

         HashSet的实现通过Hash表实现的:

         添加对象到HashSet的过程:

         元素——取出元素的hashcode---通过Hash算法——索引到相应的存储空间;

         HashSetcontains方法实现:

         参数对象的hashcode值找到相应的存储空间,然后和该空间的对象进行equal比较;

 

         hashCode方法,与equals方法的一致性;一般使用IDE工具生成hashCode算法;

map集合

map集合定义了查找表,即所谓的“value””key”映射对,key可以看出value的索引,作为KeyValue在集合中不能重复;

         map接口的实现类常用的有hash表实现的HashMap,排序二叉树的TreeMap;

         map接口的常用方法有getset:

         Object put(K key, Object value);作用将Key_value映射对写入到Map中,如果集合中已经包含该Key,则返回Key映射的原理的Value值;如果没有则返回null

         V get(K key);返回K值映射的value;

7.1 Map的常用方法

         Boolean containsKey(Object key);判断map中是否包含Key的索引;

         Boolean containsValue(object value);判断map中是否包含value的值;

         例如:

                   创建数组:

                   String str=”123,321,124,421,125,521”;

                   String[] arr=str.split(“”)

                   创建Map对象

                   Map<String,integer> map=new HashMap<String,integer>();

                   统计字符出现的次数:str作为Key,出现次数作为Value;需要遍历字符数组,检查集合中是否包括Key值,来判断出现的次数;

                   for(i=0;i<arr.length;i++){

                            if(map.containsValue(arr[i]))

                            {/**put方法替换,value + 1key不变*/

         map.put(arr[i],map.get(arr[i]) + 1);

}else{

/**初始数值*/

map.add(arr[i],1)

}

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值