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。

相关推荐
xiaoqiMikko3 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷3 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路3 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白4 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
QCoding4 小时前
Spring AI Alibaba Graph实战:从ReAct Agent到Workflow,企业AI复杂流程该如何编排?
java·人工智能
用户094248568034 小时前
第25章:Java虚拟线程(Project Loom)实战与调度协作
java·jvm
砚底藏山河4 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
wuminyu4 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
Elastic 中国社区官方博客4 小时前
使用 Lucene 搜索你的 Bean — 索引
java·大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
code2cat5 小时前
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变
java·开发语言·cas·并发编程·逻辑删除