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。

相关推荐
渣哥6 分钟前
如果没有双亲委派,Java 会乱成什么样?
java
jokr_14 分钟前
C++ STL 顶层设计与安全:迭代器、失效与线程安全
java·c++·安全
Code_Artist19 分钟前
[Java并发编程]6.并发集合类:ConcurrentHashMap、CopyOnWriteArrayList
java·后端·源码阅读
爬虫程序猿22 分钟前
利用 Java 爬虫按关键字搜索 1688 商品详情 API 返回值说明实战指南
java·开发语言·爬虫
前端赵哈哈1 小时前
初学者入门:Android 实现 Tab 点击切换(TabLayout + ViewPager2)
android·java·android studio
jokr_1 小时前
C++ 指针与引用面试深度解析
java·c++·面试
杨杨杨大侠1 小时前
第6篇:链路追踪系统 - 分布式环境下的请求跟踪
java·后端·apache log4j
乘风归趣1 小时前
spire.doc在word中生成公式
java·开发语言·word
kong@react1 小时前
docker部署spring boot,安装jdk17、maven3.8.8详细步骤
java·spring boot·docker
莹莹啦1 小时前
聊一聊Java线程池的核心参数
java·后端