【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笔记】
- 十、抽象类与接口【黑马JavaSE笔记】
- 十五、多线程【黑马JavaSE笔记】
- 二十二、反射【黑马JavaSE笔记】
- JavaSE:第七章:高级类特性
- java hashmap 遍历删除元素_java 中 HashMap 遍历与删除[通俗易懂]
- hashmap扩容过程保证可用_HashMap扩容
- JavaSE基础 (全网最全知识点)
- JavaSE继承和多态
- JavaSE(十一)之异常处理详解编程语言
- [javaSE] 看知乎学习工厂模式详解编程语言
- [javaSE] 注解-自定义注解详解编程语言
- [javaSE] 反射-获取类的成员属性和构造方法详解编程语言
- [javaSE] GUI(练习-列出指定目录内容)详解编程语言
- [javaSE] 位运算符(&|^)详解编程语言
- [javaSE] 数组(排序-选择排序)详解编程语言
- [javaSE] 基本类型(String相关)详解编程语言
- [javaSE] 集合框架(ArrayList,LinkedList,Vector)详解编程语言