【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" ...
- linux命令——scp 两台linux机器间文件或目录传输
不同的Linux之间copy文件常用有3种方法: 第一种:ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种:采用sam ...
- Codeforces 167B Wizards and Huge Prize(概率dp)
题意: n个人,开始有一个容量为k得背包,击败一个人背包可以获得一定容量或得到一个财富(放入背包内),给出击败每个人的概率,求至少击败l个人,且背包容量大于获得的总财富值的概率 分析: 状态好确定,d ...
- Jemeter对Oracle数据库性能测试方法
下载Oracle的jdbc数据库驱动包,注意Oracle数据库的版本,这里使用的是:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 ...
- aspx与ascx,ashx的用法详细的总结介绍
这篇文章主要是对aspx与ascx,ashx的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网 ...
- commons-lang3-3.4.jar
StringUtils 1.StringUtils.isBlank(str); 检查字符串是否为空白(“ ”),为空(“”),为null. * StringUtils.isBlank(null) ...
- mongoDB 3.0 安全权限访问控制 -摘自网络
"E:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" --logpath E:\mongodb\log\mongodblog.l ...
- [转]虚方法(virtual)和抽象方法(abstract)的区别
虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: //抽象方法pub ...
- Oracle导入导出之dmp
Oracle导入导出有两种方式,分别是imp/exp与impdp/expdp. 1.imp/exp exp scott/tiger file=d:\test.dmp log=d:\test.log o ...
- Java IO (1) - InputStream
Java IO (1) - InputStream 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理上 ...