首页 > 编程语言 >java MAP集合

java MAP集合

时间:2023-10-25 12:55:39浏览次数:36  
标签:MAP ConcurrentHashMap java HashMap map 线程 集合 方法

java MAP集合

map集合的特点有哪些?

map集合是无序的,键值对,建不能重复,值可以重复,集合中的键可以为空

如何给map集合赋值?可以调用map.put()方法,进行赋值(注意!键不可以重复)

如何获取到map集合的值? 可以调用map.get()方法,可以通过键获取值

运行结果

如何遍历map集合?便利map集合的方法有很多种方法如下

方法1:先获取所有建的set集合,在遍历(此方法通过建获取值)

 运行结果如下

 方法2:取出保存所有Entry的Set,在遍历set即可(此方法可以便利出键和值)

  运行结果如下

如何使map不被覆盖?可以运用以下方法(使用map.putIfAbsent()方法则是如果key不存在则执行写入)

  运行结果如下

HashMap特点:线程不安全,最常用,速度快

在jdk早期版本中HashMap存在线程不安全如果他是一个类的成员变量那么它很可能存在多个线程同时去访问HashMap的情况它不能能够保证线程安全
HashTabe :它的特点是线程安全的但是性能不高
ConcurrentHashMap:线程安全,比HashTable性能高

ConcurrentHashMap 它的调用使用方法和map是一样的但是内部的实现逻辑不一样(当我们需要线程安全时可以使用ConcurrentHashMap )(ConcurrentHashMap 比HashTabe 性能高)


TerrMap:主要用在需要对key值进行排序的时候使用

运行结果如下:


LinkedHashMap:它是继承自HashMap但是LinkedHashMap是有序的,且默认为插入顺序
(当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了)演示代码如下

 

运行结果如下

 

总结:
在map中用的最多有两个,一个是HashMap(这是用的最多的),如果说他是一个成员变量我们需要保证他的线程安全性的话我们可以使用ConcurrentHashMap 
这两个是用的比较多的HashTable虽然安全但是新能不高,在我们需要手动指定顺序时我们则会用到TreeMap
 

原文链接:https://blog.csdn.net/weixin_67696142/article/details/123760089

标签:MAP,ConcurrentHashMap,java,HashMap,map,线程,集合,方法
From: https://www.cnblogs.com/sunny3158/p/17786905.html

相关文章

  • Java拾贝第十一天——IO之File类
    Java拾贝不建议作为0基础学习,都是本人想到什么写什么Java中提供了IO以操控计算机中的文件File类在整个IO包中,与文件相关的类就是File类。使用它可以进行创建或删除文件因为File类是个普通类,初始化它需要调用其有参构造publicFile(Stringpathname){//传参为文件路径}使......
  • 华为云耀云服务器L实例:初级篇-java环境配置
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • java spring,springmvc,spring boot,spring data,RESTful api设计风格,HTTP协议的四种传
    一.基本技术1.Springmvc=手动接电线(配置xml),提供了一种友好的方式来开发Web应用程序。通过使用诸如DispatcherServlet,ModelAndView和ViewResolver,可以轻松开发Web应用程序。2.SpringBoot=标准插座(第3方开源类库想接入,就按照标准做一个starter的适配),实现了免xml配置和提供......
  • Java类加载机制详解 | 京东云技术团队
    一.类加载器及双亲委派机制类加载器加载类备注启动类加载器(BootstrapClassLoader)JAVA_HOME/jre/lib无上级,无法直接访问由jvm加载拓展类加载器(ExtensionClassLoader)JAVA_HOME/jre/lib/ext父加载器为Bootstrap,显示为null。该类由Bootstrap加载应用类加载器(ApplicationClassLoa......
  • Java 流程控制 01~12
    Java流程控制01~121.Scanner对象实现获取用户输入​ 1.1.scanner基本用法Scannerscanner=newScanner(System.in);//接受用户inputif(scanner.hasNextLine()){//判断用户是否输入Stringstr=scanner.nextLine();//获取用户输入System.out.println("......
  • Java图片压缩遇到 "No suitable ImageReader found for source data."
     问题:使用压缩工具的时候突然遇到图片压缩失败的情况。此时检查一下要上传的图片是否正常。处理方式:检查图片数据是否异常,一个图片五六兆。图片虽然是JPG结尾的,但是不在“ ImageIO”类的支持范围内。例如 WebP图片虽然可以以JPG格式结尾,但是 “ ImageIO”类......
  • 「Java开发指南」如何在MyEclipse中使用JPA和Spring管理事务?(二)
    本教程中介绍一些基于JPA/spring的特性,重点介绍JPA-Spring集成以及如何利用这些功能。您将学习如何:为JPA和Spring设置一个项目逆向工程数据库表来生成实体实现创建、检索、编辑和删除功能启用容器管理的事务在上文中,我们为大家介绍了如何用JPA和SpringFacets创建一个Java......
  • Jenkins配置java和vue构建环境
    jdk,maven,node,localtime等配置可通过挂载的方式进行配置前提条件是虚拟机中已配置好jdk,maven,node等环境注意自己虚拟机相关环境配置的路径以下样例为我自己的虚拟机中的配置路径-v宿主机(虚拟机)路径:容器路径dockerrun--namejenkins-p28081:8080-p50000:50000-v/v......
  • Java双端队列Deque简述
    概述​ Deque是一个双端队列接口,继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。​ Deque是一个线性collection,支持在两端插入和移除元素。名称deque是“doubleendedqueue(双端队列)”的缩写,通常读为“deck”。大多数......
  • 在Java中,如果一个日期是字符串类型的"2023-01",怎样获取前一个月
    在Java中,如果一个日期是字符串类型的"2023-01",你可以使用java.time包中的类来处理日期。以下是一个示例代码,演示如何获取前一个月的字符串类型的月份:importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(St......