JavaMap集合--双列集合

2024-04-08 14:36
文章标签 java map 集合 双列

本文主要是介绍JavaMap集合--双列集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

Java集合API 

双列集合(键:值)

Map接口

HashMap

概念

代码

运行

HashMap   结构 - - 源码

HashMap结构图

HashMap添加元素源码

链表转红黑树机制

​编辑

代码

运行

TreeMap

概念

代码 

运行

Hashtable

概念

Hashtable键值不能为空

代码

运行

Map集合遍历

方式一

代码

运行

方式二

代码

运行


Java集合API 

集合体系概述 Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。

双列集合(键:值)

Map接口

将键映射到值的对象

一个映射不能包含重复的键

每个键最多只能映射到一个值

HashMap

概念

HashMap<String,String> map = new HashMap<>();

底层是哈希表+链表+红黑树

键值可以为null

键无序

多线程情况下不安全

代码

Map 
  键:值对
  键不能重复,值可以重复
  一个键映射到一个值
  HashMap
    键是无序的 

package com.ffyc.javacollection.map;import java.util.Collection;
import java.util.HashMap;
import java.util.Set;public class HashMapDemo1 { public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("c", "gg");map.put("x", "ax");map.put("a", "cm");map.put("h", "CC");map.put("c", "hh");map.put(null, null);map.put("gg", null);System.out.println(map);//通过key获取到key所对应的value值System.out.println(map.get("x"));//删除键值映射,并返回该键对应的值System.out.println(map.remove("x"));//确认是否有指定键值映射 有--true 没有--falseSystem.out.println(map.containsKey("x"));//确认是否有指定值 有--true 没有--falseSystem.out.println(map.containsValue("hh"));//判断是否为空System.out.println(map.isEmpty());//键值段(长度)System.out.println(map.size());//把值拿出来存储在一个Collection类型数组Collection<String> values = map.values();System.out.println(values);//把键拿出来存储在一个Set类型数组Set<String> keys = map.keySet();System.out.println(keys);System.out.println(map);//删除所有的键值映射map.clear();System.out.println(map);}
}
运行

HashMap   结构 - - 源码

HashMap结构图

HashMap添加元素源码

链表转红黑树机制

代码
public V put(K key, V value) {return putVal(hash(key), key, value, false, true);
}
package com.ffyc.javacollection.map;import java.util.Collection;
import java.util.HashMap;
import java.util.Set;public class HashMapDemo2 { public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("c", "gg");map.put("x", "ax");map.put("a", "cm");map.put("h", "CC");map.put("c", "hh");System.out.println(map);}
}
运行

TreeMap

概念

TreeMap<String, String> tmap = new TreeMap<>();

底层是红黑树结构

键是有序的 可以排序

代码 

Map
  键值对
  键不能重复 值可以重复

TreeMap
  底层使用的是树型结构
   键可以排序(有序),键的类型必须实现Comparable接口 

package com.ffyc.javacollection.map;import java.util.TreeMap;public class TreeMapDemo { public static void main(String[] args) {TreeMap<String, String> tmap = new TreeMap<>();tmap.put("c", "c");tmap.put("b", "b");tmap.put("d", "d");tmap.put("a", "a");tmap.put("b", "bb");System.out.println(tmap);}
}
运行

Hashtable

概念

Hashtable<String, String> hmap = new Hashtable<>();

底层与HashMap一致

不可以存储为null的键值

键也是无序的

多线程情况下是安全的

Hashtable键值不能为空

代码

Map 
  键值对
  键不能重复 值可以重复

Hashtable
  底层结构与HashMap相同,但是是线程安全  方法添加synchronized关键字
  Hashtable不可以存储为null的键和值

  HashMap可以存储一个为null的键,值也可以为null 

package com.ffyc.javacollection.map;import java.util.Hashtable;public class HashtableDemo { public static void main(String[] args) {Hashtable<String, String> hmap = new Hashtable<>();hmap.put("x","x");hmap.put("a","a");hmap.put("g","g");hmap.put("i","i");hmap.put("x","x");/*hmap.put(null, null);//NullPointerExceptionhmap.put("gg", null);*/System.out.println(hmap);}
}
运行

Map集合遍历

方式一

方式1:根据键找值

• 获取所有键的集合

• 遍历键的集合,获取到每一个键

 • 根据键找值

代码
package com.ffyc.javacollection.map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapDemo3 {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("c", "gg");map.put("x", "ax");map.put("a", "cm");map.put("h", "CC");map.put("c", "hh");//方式一:keySet()获取到所有的键  遍历键的集合Set<String> keySet = map.keySet();for (String key:keySet) {System.out.println(key+":" + map.get(key));}}
}
运行

方式二

方式2:根据键值对对象找键和值

• 获取所有键值对对象的集合

• 遍历键值对对象的集合,获取到每一个键值对对象

• 根据键值对对象找键和值

代码
package com.ffyc.javacollection.map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapDemo3 {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("c", "gg");map.put("x", "ax");map.put("a", "cm");map.put("h", "CC");map.put("c", "hh"); //方式二:通过entrySet()获取到一个Entry类型的集合,Entry中放有键值对Set<Map.Entry<String, String>> entries = map.entrySet();for(Map.Entry entry : entries){System.out.println(entry.getKey()+":"+entry.getValue());}}
}
运行

这篇关于JavaMap集合--双列集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885858

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.