java集合框架------Map接口与实现类

简介: java集合框架------Map接口与实现类

初识Map:

Map接口没有从Collection接口继承,Map接口用于维护“键-值”对数据,这个“键-值”对就是Map中的元素,Map提供“键(Key)”到“值(value)”的映射,一个Map中键值必须是唯一的,不能有重复的键,因为Map中的“键-值”对元素是通过键来唯一标识的,Map的键是用Set集合来存储的,所以充当键元素的类必须重写hashCode()和equals()方法,通过键元素来检索对应值元素


Map中常用方法:

V put(K key, V value) //向Map集合中添加键值对 
V get(Object key)     //返回指定键映射到的值,通过key获取value 
void clear()    //从此映射中删除所有映射,清空Map集合
boolean containsKey(Object key) //判断Map是否包含某个key
boolean containsValue(Object value) //判断Map是否包含某个value
boolean isEmpty() //判断Map中元素个数是否为0
Set<K> keySet() //获取Map集合中所有的key(所有的键都是一个“Set集合”)
V remove(Object key)  //通过key删除键值对,如果存在,则从该映射中移除键的映射(可选操作)
int size()  //获取Map集合中键值对的个数

HashMap:

HashMap特点:

(1)HashMap实现了Map 接口
(4)HashMap以Hash表为基础构建
(2)HashMap 允许键(Key)为空和值(Value)为空
(3)HashMap不是线程安全的,不能用在多线程环境中

HashMap常用的构造方法如下:

(1)HashMap():创建一个空 HashMap 对象,并为其分配默认的初始容量和加载因子


(2)HashMap(int initialCapacity):创建一个空 HashMap 对象,并为其分配指定的初始容量


(3)HashMap(int initialCapacity,float loadFactor);创建一个空 HashMap 对象,并其分配指定的初始容量和加载因子


(4)HashMap(Map m):创建一个与给定Map 对象具有相同键-值对的 HashMap 对象

HashMap方法的简单使用:

import java.security.Key;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Warehouse1 {
    public static void main(String[] args){
        HashMap<String,Integer> hashMap=new HashMap<>();
        hashMap.put("年龄",20);
        hashMap.put("身高",180);
        hashMap.put("体重",60);
        System.out.println("键为年龄所对应的值为:"+hashMap.get("年龄"));
        System.out.println("该map是否包含键为“年龄”?"+hashMap.containsKey("年龄"));
        System.out.println("该map是否包含键值为90?"+hashMap.containsValue(90));
        System.out.println("该map是否为空?"+hashMap.isEmpty());
        System.out.println("该map的长度大小为:"+hashMap.size());
        System.out.println("移除键为“体重“的键值对"+hashMap.remove("体重"));
        System.out.println("哈希映射中的内容如下:"+hashMap);
        Set<String> keys=hashMap.keySet();
        Iterator<String> iterator=keys.iterator();
        System.out.println("hashmap中的元素如下:");
        while(iterator.hasNext()){
            String s= iterator.next();
            Integer name= hashMap.get(s);
            System.out.println(s+":"+name);
        }
    }
}

输出:

键为年龄所对应的值为:20
该map是否包含键为“年龄”?true
该map是否包含键值为90?false
该map是否为空?false
该map的长度大小为:3
移除键为“体重“的键值对60
哈希映射中的内容如下:{年龄=20, 身高=180}
hashmap中的元素如下:
年龄:20
身高:180

小tips:在输出map中的元素时,我们不能直接使用iterator[迭代器],对元素进行遍历输出,因为迭代只能用在Set/List这种单列存放数据的集合中,而map是双列的,并且也不能使用foreach语句对map进行输出,因为foreach语句的本质也是迭代,只能用在单列集合中。


LinkedHashMap:

LinkedHashMap有如下特点:

1:LinkedHashMap实现了Map接口
2:LinkedHashMap继承了HashMap,内部还有一个双向链表维护键-值对的顺序,每个键-值对即位于哈希表中,也位于双向链表中
3:LinkedHashMap保存了两种元素顺序,输入顺序和访问顺序,插入顺序是指先添加的元素在前面,后添加的元素在后面,修改对应的元素不会影响元素的顺序,访问顺序指的是get/put操作,对一个键执行put/get操作后,其对应的键-值对会移动到链表末尾,所以最末尾的元素是最近访问的,最开始的是最久没有被访问的
4:LinkedHashMap不是线程安全的,不能用在多线程环境中
相关文章
|
12月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
463 100
|
12月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
442 101
|
12月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
3595 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
11月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
11月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
894 8
|
11月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
270 7
|
11月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
12月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
348 4
|
SQL Java 数据库连接
Java面试题日积月累(SSM框架面试题22道)
Java面试题日积月累(SSM框架面试题22道)
420 0
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
548 1