【Java基础18_1】Map集合
来源:互联网 发布:白城广逸网络具体位置 编辑:程序博客网 时间:2024/05/30 23:02
引子
- 班级中有很多学生,有可能出现姓名和年龄也一样的人。如表:
上面的这种情况,有可能是用户输入失误导致插入的数据出现重复,也有可能这两个人只是恰巧同名同姓而已,实际上根本不是同一个人。
此时,单单用姓名无法保证插入数据的唯一性,因此采取以下措施:
- 用ID保证
- 在1的基础同时用姓名保证
Map一个键对应存储的一个值。
Map 与Collection集合的区别
- Map集合是双列集合,Collection集合是单列的。
- Map集合是靠键来保证元素唯一,Map集合的键相当于Set集合,能够保证元素唯一。值不唯一,Map集合的值相当于Collection集合的List接口。
- Map集合保证元素唯一只针对键有效。而Set集合保证元素唯一。
- 通过查看API,发现 Map 集合是一个接口:
- 接口 Map<K ,V >
- K表示键的类型
- V表示值的类型
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
基本方法
如果没有这个键,就添加到这个集合中并返回null;
如果已经有了这个键,那么就将这个键的值给替换,返回被替换的值。 V remove ( K key ); 根据键删除元素,并返回被删除元素的值。 void clear ( ); 清空集合 boolean containsKey ( Object key); 判断是否包含key键 boolean contiansValue ( Object value); 判断是否包含value值 boolean isEmpty ( ); 判断Map是否为空 int size ( ); 返回键值对个数
获取相关功能
Map 的遍历
- 先获取所有的键的Set集合,然后根据键获取值。
此方式遍历含自定义类的Map源码 - Map存储的是一个个键值对对象,可以将键值对看成一个对象,遍历键值对对象再获取其值。
- 这个键值对对象在Java中叫Entry,这个对象封装了键的信息和值的信息。因此Entry应该有对应方法获取这个对象的键和值。
- 获取键值对对象的Set集合。
- 遍历键值对对象的Set集合,获取每一个键值对对象。
- 根据键值对对象获取键和值。
此方式遍历含自定义类的Map源码
- 这个键值对对象在Java中叫Entry,这个对象封装了键的信息和值的信息。因此Entry应该有对应方法获取这个对象的键和值。
import java.util.HashMap;import java.util.Map;import java.util.Set;/* * 有关Map遍历普通String类型的Demo * 方式1:先获取所有的键的Set集合,然后根据键获取值。 */public class MapTrversalDemo { public static void main(String[] args) { //创建Map集合 Map<String,String> map = new HashMap<>(); //往Map集合里添加元素 map.put("001","张三"); map.put("002", "李四"); map.put("003", "王五"); map.put("004", "赵六"); //步骤一:获取Map集合里所有的键值 Set<String> keySet = map.keySet(); //打印输出格式 System.out.println("编号\t姓名"); //根据键值获取值并打印输出 for (String keys : keySet) { System.out.println(keys+"\t"+map.get(keys)); } }}
import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Set;/* * 有关Map的遍历 * 方法2: * Map是由多个保存了键和值的键值对的Entry对象组成的,可以遍历这些Entry对象,再通过Entry分别获取键和值。 * */public class MapTrversalEntryDemo { public static void main(String[] args) { //创建Map对象 Map<String,String> map = new HashMap<>(); //在map中添加元素 map.put("001", "田馥甄"); map.put("002", "陈粒"); map.put("003", "谢春花"); map.put("004", "银临"); //打印输出标题 System.out.println("\t编号\t歌手"); //1. 获取键值对对象Entry的Set集合 Set<Entry<String, String>> entrySet = map.entrySet(); //2. 遍历键值对对象的Set集合,获取每一个键值对对象 for (Entry<String, String> entry : entrySet) { //3. 根据键值对对象获取键和值 System.out.println("\t"+entry.getKey()+"\t"+entry.getValue()); } }}
Entry图解
- 注意:Enrty是Map的内部类,API应当在 Map 类中的嵌套类中查询。
图解如下:
Map.Entry的相关方法
阅读全文
0 0
- 【Java基础18_1】Map集合
- Java基础 集合Map
- java基础-Map集合
- Java基础集合Map
- Java基础---集合 map
- Java基础16-集合Map
- Java基础16:map集合;
- 集合框架-MAP(java基础)
- Java基础<十三>------Map集合
- java基础集合之Map
- Java基础 list map 集合
- java基础-- 集合框架 之 Map集合
- Java基础--集合框架(Map集合)
- JAVA学习_1基础
- JAVA基础知识点_1
- Java基础_1
- Java基础_1
- Java集合List,Set,Map基础
- 第八周项目二—建立链串的算法库
- SpringMVC中的controller
- Web安全,常见攻击防范
- 程序员必备之沟通的艺术
- leetcode 219. Contains Duplicate II 217. Contains Duplicate
- 【Java基础18_1】Map集合
- 顺序队列和链队列的实现(实验3.2)
- 基于注解开发项目中spring.xml文件的配置
- 123
- nmap端口扫描及邮件告警脚本
- 短除法求最大公约数(转自算法设计与分析第三版)
- 用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序有4个类,名字分别为:pc CPU harddisk 和Test ,其中TEST是主类。
- 前端面试题系列(1):doctype作用 标准模式与兼容模式
- 从零开始开发IoC依赖注入框架 -- containerx (深入研究Spring源码)