package com.iotek.map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HashMapDemo1 {
public static void main(String[] args) {
// HashMap<String, String> map = new HashMap<String,String>();    //创建HashMap对象,也就是创建一个Map容器
Map<String, String> map = new HashMap<String,String>(); //接口的引用变量指向实现类的对象
map.put("jay", "张三"); //添加键值对元素
map.put("jay", "李四");
//有相同的键时,后面添加的键对应的值会覆盖掉之前键对应的值
map.put("john", "李四");
//键名不同,键值相同,会保存重名的键值,也就是说值是可以重复的,键是不能重复的
map.put("rose", "玫瑰"); 
map.put("mary", "小红"); 
System.out.println(map);

Set<String> keys = map.keySet();// 获取map中所有键,返回的是一个Set容器,可以用迭代器对象或者foreach来进行输出
System.out.println("******输出map容器中所有的键:");
/*for(String key : keys) {
System.out.print(key + " "); //用String类型的变量key来遍历keys容器
}*/

//获取map中所有的值:使用map接口中的values方法,返回Collection接口的实现类
Collection<String> values = map.values();
System.out.println("\n******输出map容器中所有的值:");
for(String value : values) {
System.out.print(value + " "); //用String类型的变量value来遍历values容器
}

//得到key的同时,得到key所对应的值
System.out.println("\n******用获取的键来得到对应的值并输出:");
for(String key : keys) {
System.out.print(key + "--" + map.get(key)); //用String类型的变量key来遍历keys容器
}
//map.get(Object key)方法返回的是指定的键所对应 的值,
System.out.println("\nmap容器中键值对的个数是:" + map.size());
System.out.println("判断map容器中是否为空:" + map.isEmpty());

// map.entrySet()返回的是一个set容器,其中放的是map.Entry内部接口
/*当我们调用put(key,value)方法时,首先会把key和value封装到Entry这个静态内部类中,
* 再把Entry对象添加到数组中(哈希表),所以我们想要获取map中的所有键值对,只需要获取
* 数组汇总所有的Entry,接下来调用Entry对象中的getKey 和getValue方法就能获取键值对
* 以后想输出HashMap容器中所有的键值对,都可以调用HashMap的 entrySet()方法就可以了!!!*/
Set<Entry<String, String>> entrys = map.entrySet();
System.out.println("使用map接口的entrySet()方法获取map容器中所有的键值对:");
for (Entry<String, String> entry : entrys) {
System.out.println(entry.getKey() + "-" + entry.getValue());
}
map.clear();
System.out.println("判断map容器中是否为空:" + map.isEmpty());
}
}

最新文章

  1. jenkins无法重启tomcat的原因
  2. Mybatis关联查询(嵌套查询)
  3. SIT_服务器系统整合测试总结
  4. phpstrom 10 激活
  5. 关于安装sql2012出现的netfx3功能问题
  6. 二:C语言(分之结构)
  7. 在一个未知的CentOS服务器中如何加上PHP的openssl扩展
  8. ABAP 使用的字符类型
  9. [Webpack 2] Grouping vendor files with the Webpack CommonsChunkPlugin
  10. 乱译文档--开始使用Musca
  11. Win10使用小技巧
  12. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法
  13. VMware上安装MS-DOS 6.22之一:基本系统的安装
  14. Android-重新包装Toast,自定义背景
  15. 第2阶段——编写uboot之启动内核和制作Makefile(2)
  16. cookieUtil
  17. Windows Server 2008 R2 服务器系统安装及配置全过程图文详解
  18. RequireJS模块化编程详解
  19. js 判断 ip
  20. Ubuntu 16 桌面版使用笔记

热门文章

  1. be of +名词 = 形容词 (词性变化) ; || it is adj. of + 人称宾格 = 人称主格 + 形容词 (人称变化)
  2. LinkedBlockingDeque 源码分析
  3. CSS- 层叠和继承
  4. 去掉IE浏览器里的脚本控件提示
  5. 一个简单的INI读写文件类,基于C++的模板编程实现,使用超级方便
  6. oracle--对象权限
  7. [Python3 练习] 002 温度转换2
  8. 并发问题java
  9. JWT详解-(JSON Web Token教程)
  10. 【前端芝士树】Vue.js面试题整理 / 知识点梳理