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

相关文章

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN