第三阶段 JAVA常见对象的学习

集合框架——Map集合

在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息。今天我们所介绍的Map集合就可以很好的帮助我们实现这种需求

(一) 概述及功能

(1) 概述

Map是一种存储元素对的集合(元素对分别称作 键 和 值 也称键值对)它将键映射到值的对象。一个映射不能包含重复的键,并且每个键最 多只能映射到一个值。

怎么理解呢?
键 (key):就是你存的值的编号 值 (value):就是你要存放的数据
你可以近似的将键理解为下标,值依据键而存储,每个键都有其对应值。这两者是1、1对应的
但在之前下标是整数,但是Map中键可以使任意类型的对象。

Map集合和Collection集合的区别?

  • Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的
  • Collection集合存储元素是单独出现的,Collection的子类Set是唯一的,List是可重复的。
  • Map集合的数据结构值针对键有效,跟值无关,Collection集合的数据结构是针对元素有效

(2) 功能

A:添加功能

//添加元素

B:删除功能

//移除所有的键值对元素

C:判断功能

//判断集合是否包含指定的键

D:获取功能

//将map集合中的键和值映射关系打包为一个对象

E:长度功能

//返回集合中的键值对的对数

(二) Map集合的遍历

package 

(三) Map及子类总结

Map(双列集合)

  • Map集合的数据结构仅仅针对键有效,与值无关。
  • 存储的是键值对形式的元素,键唯一,值可重复

HashMap

  • 底层数据结构是哈希表,线程不安全,效率高
  • 哈希表依赖两个方法:hashCod()和equals()
  • 执行顺序:
    • 首先判断hashCode()值是否相同

      • 是:继续执行equals(),看其返回值

        • 是true:说明元素重复,不添加
        • 是false:就直接添加到集合
    • 否:就直接添加到集合
  • 最终:
  • 自动生成hashCode()和equals()即可

LinkeHashMap

  • 底层数据结构是由链表和哈希表组成
  • 由链表保证元素有序
  • 由哈希表保证元素唯一

Hashtable

  • 底层数据结构是哈希表
  • 哈希表依赖两个......自动生成hashCode()和equals()即可

TreeMap

  • 底层数据结构是红黑树(是一种自平衡的二叉树)

如何保证元素唯一性呢?

  • 根据比较的返回值是否是0来决定

如何保证两种元素的排序呢?

  • 自然排序(元素具备比较性)

    • 让元素所属的类实现comparable接口
  • 比较器排序(集合具备比较性)

    • 让集合接收一个comparator的实现类对象

可以多层嵌套

HashMap集合嵌套HashMap

HashMap集合嵌套ArrayList

ArrayList集合嵌套HashMap

HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>

1:Hashtable和HashMap的区别?

Hashtable:线程安全,效率低。不允许null键和null值

HashMap:线程不安全,效率高。允许null键和null值

(其实HashMap就是用来替代Hashtable的,就像ArrayList替代vector一样)

2:List,Set,Map等接口是否都继承子Map接口?

List,Set不是继承自Map接口,它们继承自Collection接口

Map接口本身就是一个顶层接口

需要排序:TreeMap

不需要排序:HashMap

不知道具体需求:HashMap

(四) 经典案例

(1) 统计字符串中字符出现的次数

import 

(2) 模拟斗地主案例

在讲解这个案例之前,我们先来了解一个我们下面案例中所需要知道的知识点

Collections 工具类

Collections:是针对集合进行操作的工具类,都是静态方法。

面试题:

Collection和Collections的区别?

Collection:是单列集合的顶层接口,有子接口List和Set。(Map是双列的)

Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

Collections的静态方法

//排序 默认情况下是自然顺序。

//斗地主案例代码

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤
一个坚持推送原创Java技术的公众号:理想二旬不止

c++ map iterator 获取key_Java集合框架——Map接口相关推荐

  1. c++ map iterator 获取key_JAVA | Map集合使用详解

    引言   了解Set集合如何使用和旗下各类比较,这篇我们继续和大家一起看看Map集合的使用机制. Map Map集合介绍   Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,k ...

  2. c++ map iterator 获取key_Java遍历Map的4种方法

    import

  3. java集合框架的接口_Java集合框架——Set接口

    第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...

  4. Java集合框架——List接口

    第三阶段 JAVA常见对象的学习 集合框架--List接口 image 按照集合框架的继承体系,我们先从Collection中的List接口开始学习 (一) 概述及功能(ArrayList演示) (1 ...

  5. c++ map iterator 获取key_前K个高频的元素衍生之Map的Value与Key排序

    前言 本篇文章总结来自九月份的每日一题 347-前K个高频的元素 思考 对于系列的题目就是计算利用到Hash表的属性的Key与Value的双属性,能够满足我们后面计算对于每一个元素出现的频率的同时还能 ...

  6. Java开发笔记(五)之集合框架 Map

    java笔记目录 Map 与 HashMap的介绍 Map 增加元素实例 Map 删除元素实例 Map修改元素实例 Map 与 HashMap的介绍 Map 增加元素实例 import java.ut ...

  7. java集合框架的接口_Java集合框架之Collection接口详解

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  8. Java.集合 框架,接口,常用集合特点比对

    框架 接口 Iterable 可迭代接口 获取迭代器方法(Iterator<T> iterator();),使用该方法进行遍历. 迭代器实现Iterator接口. boolean hasN ...

  9. D - JDK17源码阅读 - 集合框架 - Collection<E> 接口 - 集合框架核心接口

    提前 关于抽象的描述并不完全代表具体的实现,但是具体实现不会脱离抽象描述 关于这个接口,官方给的描述太多太多,不用看的太仔细,随意看看就好 集合层次结构中的根接口. 一个集合代表一组对象,称为它的元素 ...

最新文章

  1. 【机器学习】搞懂机器学习的常用评价指标!
  2. 基于h5的跳一跳游戏的开发与实现_「南宁小程序开发」企业开发小程序有哪些好处?...
  3. xmind快捷键_XMind思维导图软件最全面的使用教程!
  4. openstack-networking-neutron(一)---端到端和点到点的理解
  5. 分布式机器学习框架:CXXNet
  6. vs2008中combox用法总结
  7. ehcache使用_Java 程序员如何使用 Shiro 框架
  8. TRegExpr正则表达式
  9. android+影子系统,神器再升级,手机影子系统来啦
  10. 谈一谈 IPA 上传到 App Store Connect 的几种方法
  11. 荣耀手机动态修改imei信息
  12. 注册表的保存位置在哪里?注册表文件保存在哪里?
  13. 坚持#第303天~补起昨天的、顺便写今天的(昨天又在公司搞zabbix搞到了凌晨1点,结果搞忘了写博客),主要是zabbix监控
  14. html+dwcs6代码,Dreamweaver cs6如何快速整理代码?
  15. Python处理Excel,学会这十四个方法,工作量减少大半!
  16. 2022年前端面试题整理,持续更新中
  17. java代理模式学习笔记
  18. 关于全量与增量 的思考
  19. Virtio 基本概念和设备操作
  20. python curl 获取返回值_python-将curl查询转换为请求

热门文章

  1. HDU2049 组合数学 错排公式
  2. mybatis多对一处理两种处理方式
  3. python初学火车座位判断_Python学习第三课 判断(if)语句
  4. LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
  5. Lost Numbers
  6. 案例代码:springboot+shiro配置同一用户多设备登录最大会话数
  7. PostgreSQL在win7上安装详细步骤
  8. 2013 第4届 蓝桥杯 黄金连分数【详解】
  9. CentOS 初体验十九:yum安装redis
  10. 算法—2,记一个自己的算法题 计算数字k在0到n中的出现的次数,k可能是0~9的一个值