1.1 Map接口概述
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
C:Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

1.2 Map常用功能
A:映射功能:
V put(K key, V value) :以键=值的方式存入Map集合
B:获取功能:
V get(Object key):根据键获取值
int size():返回Map中键值对的个数
C:判断功能:
boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对
boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
boolean isEmpty():判断Map集合中是否没有任何键值对
D:删除功能:
void clear():清空Map集合中所有的键值对
V remove(Object key):根据键值删除Map中键值对
E:遍历功能:
Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回
Set<K> keySet() :将Map中所有的键装到Set集合中返回
Collection<V> values():返回集合中所有的value的值的集合
1.2.1 案例代码六:

package com.itheima_01;import java.util.HashMap;
import java.util.Map;/** Map的常用功能:* 映射功能:*          V put(K key, V value)* 获取功能:* V get(Object key)* int size()* 判断功能:* boolean containsKey(Object key)boolean containsValue(Object value)boolean isEmpty()* 删除功能:* void clear() * V remove(Object key) ** 遍历功能:* Set<Map.Entry<K,V>> entrySet()*** Set<K> keySet() * Collection<V> values() */
public class MapDemo2 {
public static void main(String[] args) {
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//V put(K key, V value) :就是将key映射到value,如果key存在,则覆盖value,并将原来的value返回
System.out.println(map.put("ITCAST001", "张三"));
System.out.println(map.put("ITCAST002", "李四"));
System.out.println(map.put("ITCAST001", "王五"));
//void clear() : 清空所有的对应关系
//map.clear();
//V remove(Object key) :根据指定的key删除对应关系,并返回key所对应的值,如果没有删除成功则返回null
//System.out.println(map.remove("ITCAST005"));
//boolean containsKey(Object key) : 判断指定key是否存在
//System.out.println(map.containsKey("ITCAST003"));
//boolean containsValue(Object value):判断指定的value是否存在
//System.out.println(map.containsValue("王五"));
//boolean isEmpty() : 判断是否有对应关系
//System.out.println(map.isEmpty());
//int size() : 返回对应关系的个数
//System.out.println(map.size());
//V get(Object key) : 根据指定的key返回对应的value
System.out.println(map.get("ITCAST002"));
System.out.println(map);
}
}

1.2.2 案例代码七:

package com.itheima_01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/** Set<K> keySet() * Collection<V> values()*/
public class MapDemo3 {
public static void main(String[] args) {
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("ITCAST001", "张三");
map.put("ITCAST002", "李四");
map.put("ITCAST005", "李四");
//Set<K> keySet() : 以Set的形式获返回所有的key
Set<String> keys = map.keySet();
for (String key : keys) {
System.out.println(key);
}
System.out.println("-----------");
//Collection<V> values() :
Collection<String> values = map.values();
for (String value : values) {
System.out.println(value);
}
}
}

1.3 Map的两种遍历方式1.3.1 利用keySet()方法遍历

package com.itheima_01;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/** Map的第一种遍历方式:* 首先召集所有的丈夫* 遍历所有的丈夫* 获取每一个丈夫* 让每一个丈夫去找他自己的媳妇*/
public class MapDemo4 {
public static void main(String[] args) {
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("谢婷疯", "张箔纸");
map.put("陈关西", "钟欣桶");
map.put("李亚碰", "王飞");
//遍历Map对象
//首先召集所有的丈夫
Set<String> keys = map.keySet();
//遍历所有的丈夫
for (String key : keys) {
//让每个丈夫去找他自己的媳妇就可以了
String value = map.get(key);
System.out.println("丈夫:" + key + "---" + "媳妇:" + value);
}
}
}

1.3.2 利用entrySet()方法遍历

package com.itheima_01;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/** Map的第二种遍历方式:* 通过结婚证对象来获取丈夫和媳妇**  class 结婚证<K,V> {*          K 丈夫;*          V 媳妇;* *          public 结婚证(K 丈夫,V 媳妇) {*          this.丈夫 = 丈夫;*          this.媳妇 = 媳妇;*          }* * *          public K get丈夫() {*          return 丈夫;*          }* *          public V get媳妇() {*          return 媳妇;*          }*  }* * *  class Entry<K,V> {*          K key;*          V value;* *          public Entry(K key,V value) {*          this.key = key;*          this.value = value;*          }* * *          public K getKey() {*          return key;*          }* *          public V getValue() {*          return value;*          }*  }* *  Set<Map.Entry<K,V>> entrySet() **/
public class MapDemo5 {
public static void main(String[] args) {
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("尹志平", "小龙女");
map.put("令狐冲", "东方菇凉");
map.put("玄慈", "叶二娘");
//获取所有的结婚证对象
Set<Map.Entry<String,String>> entrys = map.entrySet();
//遍历包含了结婚证对象的集合
for (Map.Entry<String, String> entry : entrys) {
//获取每个单独的结婚证对象
//通过结婚证对象获取丈夫和媳妇
String key = entry.getKey();
String value = entry.getValue();
System.out.println("丈夫:" + key + "---" + "媳妇:" + value);
}
}
}

1.3.3 练习:
A:以key为学号字符串,value为学生姓名存入HashMap集合,分别以两种方式遍历集合
1.3.3.1 案例代码八:

package com.itheima_02;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*** 使用HashMap存储数据并遍历(字符串作为key)**/
public class HashMapDemo {
public static void main(String[] args) {
//创建Map对象
HashMap<String,String> hm = new HashMap<String,String>();
//添加映射关系
hm.put("ITCAST001", "张三");
hm.put("ITCAST002", "李四");
hm.put("ITCAST003", "王五");
hm.put("ITCAST003", "赵六");
//遍历Map对象
//方式1 获取所有的key,通过key来获取value
Set<String> keys = hm.keySet();
for (String key : keys) {
String value = hm.get(key);
System.out.println(key + "=" + value);
}
System.out.println("------------------");
//方式2:获取所有的结婚证对象,然后通过结婚证对象获取丈夫和媳妇
Set<Map.Entry<String, String>> entrys = hm.entrySet();
for (Map.Entry<String, String> entry : entrys) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "=" + value);
}
}
}
B: 定义一个学生类,学生类中有name和age两个属性,创建三个学生对象,分别对name和age赋值,然后以key为学生对象,value为学生的学号的方式存入
```HashMap集合,利用两种方式遍历这个Map
1.3.3.2 案例代码九:

package com.itheima_02;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/

  • 使用HashMap存储数据并遍历(自定义对象作为key)
  • */
    public class HashMapDemo2 {
    public static void main(String[] args) {
    //创建Map对象
    HashMap<Student,String> hm = new HashMap<Student,String>();
    //创建key对象
    Student s = new Student("zhangsan",18);
    Student s2 = new Student("lisi",20);
    Student s3 = new Student("lisi",20);
    //添加映射关系
    hm.put(s, "ITCAST001");
    hm.put(s2, "ITCAST002");
    hm.put(s3, "ITCAST002");
    //遍历Map对象
    //方式1: 获取所有的key,通过key来获取value
    Set<Student> keys = hm.keySet();
    for (Student key : keys) {
    String value = hm.get(key);
    System.out.println(key + "=" + value);
    }
    System.out.println("-----");
    //方式2:获取所有结婚证对象,通过结婚证对象获取丈夫和媳妇
    Set<Map.Entry<Student, String>> entrys = hm.entrySet();
    for (Entry<Student, String> entry : entrys) {
    Student key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key + "=" + value);
    }
    }
    }

    
    1.4 可变参数
    1.4.1 知识概述
    当参数不确定的时候, 类型要明确
    Java可以把多个参数直接帮我们转成数组

理解: 可变参数本质就是一个长度可变的数组.

格式:

    实参: 一个参数一个参数的传递形参: 类型…变量名

1.4.2 注意
在可变参数之后不可以再追加参数
参数的数量定义, 可以给多个甚至也可以一个都不不给
1.4.3 案例代码十:

Public static int getSum(int…num){
int sum = 0;
for(int i = 0; i < num.length; i++){
sum+=num[i];
}
r[/i]eturn sum;
}

转载于:https://blog.51cto.com/13517854/2097264

第2章 HashMap集合相关推荐

  1. java学习--基础知识进阶第七天--HashSet集合、HashMap集合(集合遍历)

    今日内容介绍 u  HashSet集合 u  HashMap集合(集合遍历) 第1章 HashSet集合 1.1 Set接口的特点   Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B ...

  2. 数据结构思维 第十一章 `HashMap`

    第十一章 HashMap 原文:Chapter 11 HashMap 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 上一章中,我们写了一个使用哈希的Map接口的实现.我们期望这 ...

  3. Day17(集合)学习记录(HashSet集合 HashMap集合)

    大纲: Day17(集合)学习目标 [学习目标]理解.了解.应用.记忆 通过今天的学习,参训学员能够:(解释的时候说出二级目标的掌握程度) [应用]HashSet集合 [应用]能够独立阐述Set体系的 ...

  4. Java核心技术卷一 -第九章:集合

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  5. Educoder–Java高级特性(第二章)- 集合框架【笔记+参考代码】

    Educoder–Java高级特性(第二章)- 集合框架[笔记+参考代码] 第一关 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,创建ArrayList集 ...

  6. Java SE第8章 Java集合

    Java SE第8章 Java集合 1. 集合的概念和作用 2. 使用Lambad表达式遍历集合 3.Collection集合的常规用法 4. 使用Predicate操作集合 5.使用Iterator ...

  7. HashMap集合遍历的五种方式

    文章目录 创建HashMap集合,添加数据 一.第一种foreach遍历 二.第二种foreach遍历 三.第一种迭代器遍历 效率高(建议使用) 四.第二种迭代器遍历 效率低(不建议使用) 五.JDK ...

  8. 【转】HashMap集合中key只能为引用数据类型,不能为基本类型

    在HashMap中,为什么不能使用基本数据类型作为key? 其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序.无索引.不能存储重复元素. 存储元素采用的是hash表存储数据 ...

  9. Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

最新文章

  1. Android 动画之TranslateAnimation应用详解
  2. 数据结构之图的创建(邻接表)
  3. Spring Cloud Gateway(续)
  4. 成功解决ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
  5. Spring-data-redis集成提交数据出现'maxActive'和‘maxWaitMillis’错误
  6. boost::geometry::math::equals用法的测试程序
  7. 笔记本安装ubuntu后触控板失灵
  8. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
  9. 极验验证码流程-3.图片加密处理 图片移位
  10. Redis-过期Key删除/淘汰Kry策略
  11. pytorch torch.narrow
  12. 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
  13. 给职场人士的四点良心建议
  14. 实现Eureka注册发现的高可用
  15. 智能信息处理专业是干嘛的?
  16. Orcad Pspice仿真
  17. Python(数据类型思维导图)
  18. Windows 命令提示符
  19. php7.4 ffi,PHP7.4 全新扩展方式 FFI 详解
  20. C语言 四则运算来喽!!小朋友的数学不再愁!

热门文章

  1. 深夜谈【辱母杀人案】
  2. Scala的下载与安装
  3. 音频声学相关的常用缩略语
  4. sgg-hbase-01
  5. Confluence团队协同工具使用文档
  6. 百度自然语言接口调用
  7. 遮罩层 遮挡不住 flash曲线的解决办法
  8. 密钥可以永久激活吗?
  9. Python多线程编程详解,文章比较长,需耐心浏览
  10. 解压技巧: iPhone自带的解压缩功能好强