JAVA笔记- JAVA集合类之HashMap集合
1- Map接口概述
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同:
- Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
- Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
- Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
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 keySet() :将Map中所有的键装到Set集合中返回
Collection values():返回集合中所有的value的值的集合
代码示例一:
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返回对应的valueSystem.out.println(map.get("ITCAST002"));System.out.println(map);}
}
代码示例二:
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的形式获返回所有的keySet<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);}}
}
3- Map的两种遍历方式
3.1- 利用keySet()方法遍历
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);}}
}
3.2- 利用entrySet()方法遍历
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);}}
}
4- 练习
以key为学号字符串,value为学生姓名存入HashMap集合,分别以两种方式遍历集合
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来获取valueSet<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);}}
}
定义一个学生类,学生类中有name和age两个属性,创建三个学生对象,分别对name和age赋值,然后以key为学生对象,value为学生的学号的方式存入HashMap集合,利用两种方式遍历这个Map
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来获取valueSet<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);}}
}
JAVA笔记- JAVA集合类之HashMap集合相关推荐
- 【java笔记】Map,HashMap,Collections
5.1 Map的概述和使用 package demo11Map;import java.util.HashMap; import java.util.Map;public class Demo01Ma ...
- Java笔记-Java日常笔记-Java核心语言-史上最全Java笔记-Java烂笔头-实时更新(~v~)
阿一的日常Java笔记,实时更新,有什么问题可以留言交流一下,大家一起共同进步!!! 1.Java基础 1.1.基本语法 1.1.1.关键字 定义:被java赋予特殊含义的字符串(单词): 关 ...
- Java笔记——Java多线程~
多线程 内容来自博客~ 理解线程与进程 进程 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程:进程也是程序的一次执行过程,是系统运行程序的基本单位 ...
- Java笔记(七)HashMap和HashSet
HashMap和HashSet 一)HashMap 1.Map接口 interface Map<K,V> {int size();//查看Map中的键值对个数boolean isEmpty ...
- JAVA笔记- JAVA集合类之ArrayList详解
1- 集合概述 A) 面向对象编程语言对事物的描述都是通过对象来体现的. 为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,就不能是一个基本的变量,而应该是一个容器 ...
- Java中常用集合类对比_集合比较
集合实现类 集合接口 有序性 唯一性 线程安全 空值 性能 排序 数据结构 索引 应用场景 备注 ArrayList List 有序 可重复 不安全 允许空值 查找效率高,添加/删除效率低 使用 Co ...
- think in java i o_5.[Think in Java笔记]Java IO系统
1.输入输出 InputStream和OutputStream是面向字节的,Reader和Write则面向字符的且兼容Unicode. InputStream类型 ByteArrayInputStre ...
- java访问控制度_菜鸡的Java笔记 - java 访问控制权限
java中四种访问控制权限的使用 内容 在java里面一共定义有四个权限,按照由小到大的顺序:private 那么这四种访问控制权限的特点如下 NO 范围 private defaule protec ...
- Java笔记——Java代码块的执行顺序
Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...
最新文章
- 如何在CentOS/RHEL 7上借助ssm管理LVM卷?
- 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知(草案)
- CCNA考试的一点体会
- [USACO15JAN]草鉴定Grass Cownoisseur
- Binary Watch二进制时间
- 利用keepalived和haproxy配置mysql的高可用负载均衡
- Linux gdb 破解软件密码
- python数据分析准备_使用Python进行数据分析I 环境准备
- Python 简单网页爬虫学习
- python输出字符_python输出字符
- POCO库中文编程参考指南(11)如何使用Reactor框架?
- 2018年9月28号-10月9号
- [中级01]java为什么能跨平台,而C\C++语言不能跨平台
- 机器学习笔记(七):线性回归 | 凌云时刻
- 双击java安装包没有反应_雨林木风Win7下双击JER安装包没有反应的解决技巧
- Multisim入门
- html5转ipk,OpenWrt更新ipk教程
- hp服务器安装系统分区,hp 服务器分区
- Agth 辅助工具(GAL用agth进行自动翻译工具)
- MATLAB 3d实时,MATLAB 3D 动画制作(三)- 实时随动3D动画设计