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

Java基础---映射框架

1.数据结构

数组

  • 特点:存储区间连续的,内存占用严重
  • 优点:随机读取和修改效率高。 查询来说时间复杂度O(1)
  • 缺点:插入和删除速度慢。时间复杂度为O(N)

链表

  • 特点:存储区间是离散的。内存利用率高
  • 优点:插入和删除速度快
  • 缺点:不能随机查找。查询效率低

  • 特点:本身具备了排序能力

HashMap

  • HashMap就是采用了数组+链表+红黑树的结构。
  • 通过分析得知可以通过HashMap中的key得到数组的索引,加快了CRUD的所有操作。

2. HashMap

根据Key获取对应的value。

常用方法

方法名说明
put( )添加,原本key值对应有value,在使用put方法就会变成修改
remove()删除
containsKey()判断key是否存在
containsValue()判断value是否存在

遍历方法

public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1001,"张三");
        map.put(1003,"王二");
        map.put(1001,"麻子"); //修改
        map.remove(1001); //删除
        boolean f = map.containsKey(1001); //判断key是否存在
        boolean f2 = map.containsValue("麻子");//判断value是否存在

       //遍历方法一:
        Set<Integer> set = map.keySet();
        for (Integer integer : set) {
            System.out.println(map.get(integer)); //get(key) 根据Key获取对应的value
        }
      
            
        //遍历方法二:
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println(entry.getKey()+"--"+entry.getValue());
        }
    }

3. HashTable

使用方法同HashMap差不多

常用方法

方法名说明
put( )添加,原本key值对应有value,在使用put方法就会变成修改
remove()删除
containsKey()判断key是否存在
containsValue()判断value是否存在

HashTable和HashMap的区别

  • HashMap是线程不安全的。HashTable是线程安全的

  • HashMap效率高,HashTable效率低

  • HashMap中的key和value都可以为null,HashTable不可以为null。


http://www.kler.cn/a/272734.html

相关文章:

  • 前端性能-HTTP缓存
  • .NET 学习:从基础到进阶的全面指南
  • 数据可视化:让数据讲故事的艺术
  • 2025.1.15——四、布尔注入
  • MyBatis(四)参数与配置详解
  • FFmpeg硬件解码
  • 外贸业务员的工作时间安排,抓紧收藏!
  • web学习笔记(三十五)ES6
  • v-model 粗略解析
  • c++11 标准模板(STL)(std::use_facet)(std::has_facet)
  • Java版数据结构和算法 + AI算法课程
  • 免费的sitemap网站地图生成器
  • SpringBoot集成Web Service
  • java通过Excel批量上传下载数据
  • 挑战杯 机器视觉目标检测 - opencv 深度学习
  • SpringBoot3整合Elasticsearch8.x之全面保姆级教程
  • 是否还在疑惑数据存储的大小端和所谓的整形提升呢,那就来看看吧
  • 【JVM】(内存区域划分 为什么要划分 具体如何分 类加载机制 类加载基本流程 双亲委派模型 类加载器 垃圾回收机制(GC))
  • vue xlsx读取文件时,日期转换为了天数
  • 【QT入门】VS2019和QT Creator如何添加第三方模块
  • C#,数值计算,矩阵相乘的斯特拉森(Strassen’s Matrix Multiplication)分治算法与源代码
  • Vue2 父子组件某一属性的双向绑定
  • 【软件测试知识】什么是持续集成?
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RichText)
  • 社区居民医疗健康系统 微信小程序
  • LabVIEW提升舱救援通讯监测系统