Java基础---映射框架

1.数据结构

数组

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

链表

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

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

HashMap

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

2. HashMap

根据Key获取对应的value。

常用方法

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

遍历方法

java 复制代码
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。

相关推荐
一灯架构2 小时前
90%的人答错!一文带你彻底搞懂ArrayList
java·后端
Y4090013 小时前
【多线程】线程安全(1)
java·开发语言·jvm
布局呆星4 小时前
SpringBoot 基础入门
java·spring boot·spring
风吹迎面入袖凉4 小时前
【Redis】Redisson的可重入锁原理
java·redis
w6100104664 小时前
cka-2026-ConfigMap
java·linux·cka·configmap
语戚5 小时前
力扣 968. 监控二叉树 —— 贪心 & 树形 DP 双解法递归 + 非递归全解(Java 实现)
java·算法·leetcode·贪心算法·动态规划·力扣·
quxuexi5 小时前
网络通信安全与可靠传输:从加密到认证,从状态码到可靠传输
java·安全·web
hrhcode6 小时前
【java工程师快速上手go】二.Go进阶特性
java·golang·go
小碗羊肉8 小时前
【从零开始学Java | 第三十一篇下】Stream流
java·开发语言