HashMap散列映射表
2016-04-29 11:27
281 查看
当要储存成对元素时,就要用到可以存放键值对(Key , Value)的Map了
1.Map 中只可以存放键值对(Key , Value),其中Key是不可以重复的,Key和Value是一一对应。
2.HashMap是Map 接口的实现类,即是用hash的算法实现的Map.HashMap 是非线程安全的容器,轻量级,允许空的键值对。Key 是无序的存放且不可以重复的,他也是通过Hash码值来保证Key不重复的,如果要加入的键值对和HashMap中键值对的Key是相同的,就会将这个集合中的Key所对应的value值覆盖。在使用自定义类型作为Key时,要覆盖hashCode和equals方法,处理方法与HashSet相同
3.HashMap 底层也是数组,HashSet底层其实就是HashMap,只不过是只用Key值没有Value的HashMap.
4.改变操作:添加-删除键值对:put(key ,value) 方法在此映射中关联指定值和指定键
remove(key) 方法在此映射中移除指定键的映射关系
clear() 方法在此映射中移除所有映射关系
5.查询操作:get(key) 方法返回指定键所映射的值,如果此键不包含任何映射关系,则返回null
size()方法返回此映射的关系数
6.可以把键或者值的组作为集合来处理,KeySet()方法返回此映射中所包含的键的Set视图;values()方法返回此映射所包含的值的Collection视图,在遍历Map时,用使用其KeySet()方法获得Key的一个set集合,可以通过get()方法获得Key所对应的Value.
7.在Map中如果经常删除,插入,定位元素,最好使用HashMap,如果按顺序遍历最好用TreeMap.---有序键的遍历
1.Map 中只可以存放键值对(Key , Value),其中Key是不可以重复的,Key和Value是一一对应。
2.HashMap是Map 接口的实现类,即是用hash的算法实现的Map.HashMap 是非线程安全的容器,轻量级,允许空的键值对。Key 是无序的存放且不可以重复的,他也是通过Hash码值来保证Key不重复的,如果要加入的键值对和HashMap中键值对的Key是相同的,就会将这个集合中的Key所对应的value值覆盖。在使用自定义类型作为Key时,要覆盖hashCode和equals方法,处理方法与HashSet相同
3.HashMap 底层也是数组,HashSet底层其实就是HashMap,只不过是只用Key值没有Value的HashMap.
4.改变操作:添加-删除键值对:put(key ,value) 方法在此映射中关联指定值和指定键
remove(key) 方法在此映射中移除指定键的映射关系
clear() 方法在此映射中移除所有映射关系
5.查询操作:get(key) 方法返回指定键所映射的值,如果此键不包含任何映射关系,则返回null
size()方法返回此映射的关系数
6.可以把键或者值的组作为集合来处理,KeySet()方法返回此映射中所包含的键的Set视图;values()方法返回此映射所包含的值的Collection视图,在遍历Map时,用使用其KeySet()方法获得Key的一个set集合,可以通过get()方法获得Key所对应的Value.
7.在Map中如果经常删除,插入,定位元素,最好使用HashMap,如果按顺序遍历最好用TreeMap.---有序键的遍历
package ch7; import java.util.*; public class TestHashMap { public static void main(String args[]) { HashMap <String ,String >map = new HashMap<String ,String>();//构造一个默认初始容量16和默认加载因子0.75的空HashMap //向map中添加键值对,put(K key,V value),在此映射中关联指定值和指定键 map.put("zhangsan","Java"); map.put("lisi","C++"); map.put("wangwu","C#"); map.put("yaoming","C++"); Set<String> set = map.keySet();//返回此映射中所包含的键的Set视图 Iterator <String> it = set.iterator(); Collection <String> set1 = map.values();//返回此映射所包含的值的Collection视图 Iterator <String> it1 = set1.iterator(); while(it1.hasNext()) { String item1 = it1.next(); String keys = map.get(item1); System.out.println(item1+"考试"+keys+"通过了"); } while(it.hasNext()) { String key = it.next(); String item = map.get(key);//返回指定键所映射的值;如果该键不包含任何映射关系,返回null System.out.println(key+"同学通过了"+item+"考试"); } String key1 = "yaoming"; if(map.containsKey(key1)) { System.out.println("恭喜"+key1+"同学通过了"+map.get(key1)); } else { System.out.println("很可惜"+key1+"没有通过考试!"); } String value = "C++"; if(map.containsValue(value)) { System.out.println(value + "考试还是太简单了,竟然有人通过了考试"); } else { System.out.println("竟没有人通过此考试!!!!"); } String key2 = "zhangsan"; map.remove(key2); System.out.println(key2+"作弊,取消考试成绩!!!"); } }
相关文章推荐
- PHP多进程编程实例
- android 蓝牙设备监听广播
- Retrofit 使用方法
- win7系统连接打印机出现"无权限无法打开添加打印机"的解决方法
- 慧荣SM3267AC/SM3267AE量产工具MPTool V2.5.45 v5(2015/11/04)
- Android应用的界面编程(三)--TextView及其子类
- UITextField中放置UIImage 和placeholder 字体、颜色、大小、位置
- 排序算法性能比较练习——《数据结构、算法与应用》
- Python的Urllib库的使用(爬虫基础)
- ztree编辑时默认选中
- Redis --> 为redis分配新的端口
- 王高利:udp/tcp协议及三次四次握手
- 如何阻止绑定事件,监听事件
- alijdk 8.1.1的优化使ssl性能提升2倍以上
- Android 代码混淆异常 transformClassesAndResourcesWithProguardForRelease FAILED
- nagios监控mongodb
- java笔记(2)
- SEO--让别人通过搜索引擎找到你的博客
- iOS中获取系统相册中的图片
- log4j配置