【javaSE】HashSet和HashMap
************************************************************************
****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************
SET集合
set集合存放不反复的元素,set集合中不存在equal值为ture的元素;hashSet和TreeSet是set接口的经常使用两个实现类,分别用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 HashSet和HashCode
HashSet的实现通过Hash表实现的:
加入对象到HashSet的过程:
元素——取出元素的hashcode---通过Hash算法——索引到对应的存储空间。
HashSet的contains方法实现:
參数对象的hashcode值找到对应的存储空间。然后和该空间的对象进行equal比較。
hashCode方法。与equals方法的一致性。一般使用IDE工具生成hashCode算法;
map集合
map集合定义了查找表,即所谓的“value””key”映射对,key能够看出value的索引,作为Key的Value在集合中不能反复;
map接口的实现类经常使用的有hash表实现的HashMap,排序二叉树的TreeMap;
map接口的经常用法有get和set:
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
值 + 1。key不变*/
map.put(arr[i],map.get(arr[i]) + 1);
}else{
/**初始数值*/
map.add(arr[i],1)
}
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************
【javaSE】HashSet和HashMap的更多相关文章
- HashSet和HashMap的区别
HashSet和HashMap的区别.Java的HashSet类是由哈希表支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用 null 元素.HashSet类为基本操作提供 ...
- HashSet与HashMap的区别
本文由 ImportNew - 唐小娟 翻译自 Javarevisited.欢迎加入翻译小组.转载请见文末要求. HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到C ...
- java数据结构之HashSet和HashMap(java核心卷Ⅰ读书笔记)
增加 删除 remove方法,可以删除指定的一个元素. 查找 ********************* **************************** HashSet既不可以用 0 1 2 ...
- Java HashSet和HashMap源码剖析
转自: Java HashSet和HashMap源码剖析 总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说Ha ...
- Java集合 -- HashSet 和 HashMap
HashSet 集合 HashMap 集合 HashSet集合 1.1 Set 接口的特点 Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B:没有索引 C:存入集合的元素没有重复 1. ...
- HashSet、HashMap、Hashtable、TreeMap循环、区别
HashSet 循环 //可以为null HashSet<Object> hashSet =new HashSet<Object>(); hashSet.add(1); has ...
- == 和 equals,equals 与 hashcode,HashSet 和 HashMap,HashMap 和 Hashtable
一:== 和 equals == 比较引用的地址equals 比较引用的内容 (Object 类本身除外) String obj1 = new String("xyz"); Str ...
- Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...
- JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)14
一.集合Collection 1. 集合介绍 变量:表示的内存中的一个空间,只能保存确定类型的单个数据 数组:表示的是内存中的多个连续的空间,这些空间中可以存储多个同类型的数据. 后期继续学习面向对象 ...
- 验证HashSet和HashMap不是线程安全
JAVA集合类: java.util包下的HashSet和HashMap类不是线程安全的, java.util.concurrent包下的ConcurrentHashMap类是线程安全的. 写2个测试 ...
随机推荐
- UI篇--布局问题
1.android:layout_marginRight 不起作用解决方法 今天想在RelativeLayout的左右分别放上一个按钮, 左边按钮用marginLeft="10dp" ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- DzzOffice添加动态壁纸例子-Bing每日壁纸
Bing每日壁纸介绍:bing网站每天会更新一张不同的精选图片. 此压缩包内的程序,可以自动同步更新cn.bing.com网站每天更新的图片,作为dzzoffice的壁纸使用.实现自动每天更换不同的云 ...
- 宏定义(#define)和常量(const)的区别
最近开始准备一边做实验室的研究,一边记录一些遇到的编程中的小知识点.今天在测试对矩阵进行SVD分解时,需要定义矩阵的行和列的大小,我习惯性的用宏定义来定义了这两个变量,在运行的时候,就开始思考宏定义和 ...
- android测试本地服务调试流程
我今天调试的整个过程 1,安卓发现连不上本地的tomcat 2,使用浏览器直接尝试,发现可以连上 3,怀疑是安卓APP和浏览器访问有差异,后上网搜索不到APP,只有浏览器尝试 再不就是改I ...
- ***JAVA多线程的应用场景和应用目的举例
多线程使用的主要目的在于: 1.吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的.简单的说,可能就是一个请求一个线程.或多个请求一个线程.如果是单线程,那同时只能处理一个用户的请求. ...
- (转载)OC学习篇之---类的三大特性:封装,继承,多态
之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...
- Java Client for Google Cloud Storage
关于Google Cloud Storage Google Cloud Storage有益于大文件的存储与服务(serve).此外,Cloud Storage提供了对访问控制列表(ACLs)的使用,提 ...
- 为Android游戏接入第三方登录功能
1. “游戏客户端”调用“SDK客户端”的登录功能向“SDK服务端”进行身份认证 2. 验证通过后,“游戏客户端”可得到用户信息,根据游戏逻辑可将用户信息传给“游戏服务器”进行验证 3. “游戏服务器 ...
- LNMP最新源码安装脚本(定期更新)
Linux+Nginx+MySQL+PHP+Pureftpd+User manager for PureFTPd,脚本中用到的软件包大多最新版本,修复了User manager for PureFTP ...