当前位置: 首页 > news >正文

【Java集合框架】篇五:Map接口

1. Map及实现类特点

Map:存储key-value

  • HashMap:线程不安全,效率高,key和value都可以为null,底层使用 数组+单向链表+红黑树 结构(jdk8)。
    • LinkedHashMap:是HashMap的子类,在HashMap结构的基础上增加了一对双向链表,用于记录添加元素的先后顺序,便于遍历操作,开发中,对于频繁的遍历操作,建议使用此类。
  • Hashtable:古老实现类,线程安全,效率低,key和value都不可以为null,底层使用 数组+单向链表 结构存储(jdk8)。
    • Properties:是Hashtable的子类,其key和value都是String类型,常用来处理属性文件。将某些数据和代码分离,程序执行前会先读取该配置文件。
  • TreeMap:底层使用红黑树存储,可以按照添加key-value中的key元素指定规则进行遍历。考虑使用:自然排序、定制排序。

2. HashMap中元素的特点

  1. HashMap中的所有key之间是无序的、不可重复的。所有key就构成了一个Set集合。—>因而key所在类要重写hashCode()和equals()方法。
  2. HashMap中所有的value之间是无序的、可重复的。所有的value就构成了一个Collection集合。—>因而value所在类要重写equals()方法。
  3. HashMap中的一对key-value,构成了一个Entry对象。
  4. HashMap中的所有Entry对象之间是无序的、不可重复的。所有的Entry对象就构成了一个Set集合。

3. Map中的常用方法

添加、修改操作:

添加、修改使用的方法一样

  • Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
  • void putAll(Map m):将m中的所有key-value对存放到当前map中

删除操作:

  • Object remove(Object key):移除指定key的key-value对,并返回value
  • void clear():清空当前map中的所有数据

元素查询的操作:

  • Object get(Object key):获取指定key对应的value
  • boolean containsKey(Object key):是否包含指定的key
  • boolean containsValue(Object value):是否包含指定的value
  • int size():返回map中key-value对的个数
  • boolean isEmpty():判断当前map是否为空
  • boolean equals(Object obj):判断当前map和参数对象obj是否相等

元视图操作的方法(遍历):

  • Set keySet():返回所有key构成的Set集合
  • Collection values():返回所有value构成的Collection集合
  • Set entrySet():返回所有key-value对构成的Set集合
http://www.lryc.cn/news/27476.html

相关文章:

  • Typroa安装教程
  • 【MySQL】存储引擎
  • 芯驰(E3-gateway)开发板环境搭建以及调试遇到问题的解决
  • 【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档
  • 《C++ Primer》 第十一章 关联容器
  • WebRTC标准与框架解读(1)
  • 数据结构的一些基础概念
  • 【Python每日一练】总目录(不断更新中...)
  • latex插入图片(自用)
  • 【微信小程序】-- 网络数据请求(十九)
  • K8S 实用工具之一 - 如何合并多个 kubeconfig?
  • 阿里云ECS服务器的6大功能组件
  • 外贸建站多少钱?不同预算对应的建站方案!
  • Vue3中hook的使用及使用中遇到的坑
  • 数据库-差集交集并集
  • spark性能调优(四):网络
  • 高性能 WPF 图表控件LightningChart.NET:支持从 Web 服务器获取数据 | 附最新版试用下载
  • 文科女生月入14k背后:转行IT软件测试不是谁都学得来!
  • GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取
  • 认识BUG
  • C++string类型内置的搜索函数
  • Disruptor 消费线程丢失、写入无限阻塞问题
  • 【禅道测试环境搭建及安装】Linux上的禅道安装教程,从环境搭建开始
  • spring-boot rabbitmq整合
  • CentOS7安装redis redis常用命令
  • 世界文明的脉络
  • map和set 的封装
  • Springboot集成kafka(环境搭建+演示)|超级详细,建议收藏
  • Qt 绘制图表 - Qt Charts版
  • Java学习笔记 --- JavaScript