首页 > 编程语言 >Java--Map集合

Java--Map集合

时间:2024-07-01 20:31:29浏览次数:20  
标签:Map Java HashMap 映射 -- TreeMap 接口 LinkedHashMap

Map

映射(map)是存储键和值间关联(即,键值对)的对象。给定一个键,可以找到其值。键和值都是对象。键必须唯一,但是值可以重复。

支持映射的接口

接  口

描  述

Map

将唯一键映射到值

NavigableMap

扩展SortedMap接口,以处理基于最接近匹配搜索原则的键/值对检索

SortedMap

扩展Map接口,从而以升序保存键

Map.Entry

描述映射中的元素(键/值对)

interface Map

映射围绕两个基本操作:get()和put()。为了将值放入到映射中,使用put(),指定键和值。为了获取值,调用get(),传递键作为变元,值会被返回。

映射类

常用的映射类:HashMap、LinkedHashMap、TreeMap

HashMap

HashMap实现了Map接口。它使用哈希表存储映射,即使对于比较大的集合,get()和put()的执行时间也保持不变。其声明如下:

class HashMap

HashMap类定义了以下构造方法:

HashMap( )

HashMap(int capacity)  //指定容量,默认是16

HashMap(int capacity, float fillRatio) //充填比率,0.0-1.0之间,默认0.75

HashMap(Map m)

LinkedHashMap

LinkedHashMap扩展了Hashmap类,该类在内部使用一个链表维护条目添加到映射中的顺序,从而可以按照插入顺序迭代整个映射。

LinkedHashMap定义了以下构造方法:

LinkedHashMap( )

LinkedHashMap(int capacity)

LinkedHashMap(int capacity, float fillRatio)

LinkedHashMap(Map m)

TreeMap

TreeMap类扩展了AbstractMap类,并实现了NavigableMap接口。该类使用树接口存储条目。TreeMap提供了有序存储键/值对的高效手段,并支持快速检索。应当注意,TreeMap确保其元素以键的升序存储。

TreeMap类定义了以下构造方法:

TreeMap( )

TreeMap(Comparator comp)  //比较器对象作为参数

TreeMap(Map m)

TreeMap(SortedMap sm)

Hashtable类

Hashtable类也实现了Map接口,与HashMap类似。

主要区别:

1、Hashtable是同步的、线程安全的,而HashMap不是同步的,没有实现线程安全。

2、HashMap允许将null作为一个条目的key或者value,而Hashtable不允许。当然只能有一个条目的键为null。

3、HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

Map的遍历

映射不是集合,没有实现Collection接口。因此不能直接遍历映射。

Entry接口是在Map接口的内部定义的,是内部接口。

在Map中存储的元素是键-值对,一个键-值对作为一个整体使用Map.Entry接口表示。Map.Entry定义的方法:

K  getKey()

返回该映射条目的键

V  getValue()

返回该映射条目的值

V  setValue(V v)

将这个映射条目的值设置为v

直接使用增强for循环遍历Map

Map map = new HashMap();

map.put("a", 1);

map.put("b", 2);

map.put("c", 3);

for (Map.Entry entry : map.entrySet()) {

// 获取当前遍历的键

String key = entry.getKey();

// 获取当前遍历的值

Integer value = entry.getValue();

// 打印当前遍历的键值对

System.out.println("key:" + key + ";value:" + value);

// key:a;value:1

// key:b;value:2

// key:c;value:3

}         

为了遍历映射需要采用变通的方法:获得映射的集合视图。

使用entrySet()方法,返回包含映射中所有元素(键-值对)的Set对象

使用keySet(),返回包含映射中所有键的Set对象。

使用values(),返回包含映射中所有值的Collection对象

对于这三个集合视图都是基于映射的,修改其中的一个集合会影响其他集合。

标签:Map,Java,HashMap,映射,--,TreeMap,接口,LinkedHashMap
From: https://blog.csdn.net/weixin_68489989/article/details/140109205

相关文章

  • 正则的实验应用
    """有一个长文本,需要解析成特定的数据格式解析后的格式为:{'name':'VariopartnerSICAV','lei':'529900LPCSV88817QH61','sub_fund':[{'title':'TARENOGLOBALWATERSOLUTIONSFUND','isin&#......
  • 当前完成
    已经完成pythonregion.pyRegion类stereo_to_3dto_lat_lon方法geodata.pyShoreLine类_convert_to_array_convert_to_list_create_boubox_create_ranges_densify_poly_area_classify_shoreline//有点问题,differe......
  • C++仿SKData实现C原生指针管理
    template<typenameT>classHBData{public:HBData(T*other_data,size_tother_size,boolrelease):data(other_data),size(other_size),isDeepCopy(release){}HBData(constHBData&other){if(isDeepCopy&&data)......
  • 3款免费宝藏电脑软件,每一个都非常实用
    LICEcap LICEcap是一款简洁易用的动画屏幕录制软件,主要功能是将屏幕录像的内容直接保存为高质量(每帧颜色数量可超过256)GIF动态图片格式。该软件安装包轻量级,不到500KB,运行后会以窗口的方式显示在桌面上,用户可以通过拖动选取一个合适的大小范围,点击“Record”按钮并选择保存......
  • Reactive Streams介绍及应用分析
    ReactiveStreams的介绍与应用分析如下:一、ReactiveStreams基本知识ReactiveStreams是一种基于异步流处理的标准化规范,旨在使流处理更加可靠、高效和响应式。其核心思想是让发布者(Publisher)和订阅者(Subscriber)之间进行异步流处理,以实现非阻塞的响应式应用程序。基本特性......
  • Elasticsearch架构基本原理
    Elasticsearch的架构原理可以详细分为以下几个方面进行介绍:一、Elasticsearch基本概念Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它支持全文搜索、结构化搜索、半结构化搜索、数据分析、地理位置和对象间关联关系搜索等功能。ES使用Ja......
  • SpringCloud和Dubbo有什么区别
    SpringCloud与Dubbo的区别两者都是现在主流的微服务框架,但却存在不少差异:初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案;Dubbo是SOA时代的产物,它的关注点主要在于服务的调用和治理生态环境不同: SpringCloud依托于Spring平台,具备更加完善的生态体系;而Du......
  • KUKA机器人中断编程2—中断相关的指令
    在进行中断编程时,涉及到多个指令,包括:DECL、ON、OFF、GLOBAL、BRAKE、RESUME等。1、中断声明事件和子程序通过INTERRUPTDECL...WHEN..DO..来定义。语法:INTERRUPTDECLPrioWHEN事件DO中断程序例如:INTERRUPTDECL19WHEN$IN[1]==TRUEDOstop1()其中,中断优......
  • WEB01MySQL安装和数据库
    第一天、WEB课程web课程主要讲三部分内容数据库数据库介绍什么是数据库数据存储的仓库,其本质也是一个文件系统数据库会按照特定的格式对数据进行存储,用户可以对数据库中的数据进行增加,修改,删除及查询操作。数据库管理系统层次数据库管理系统(DataBaseManage......
  • 使用Vue 2 + Element UI搭建后台管理系统框架实战教程
    后台管理系统作为企业内部的核心业务平台,其界面的易用性和功能性至关重要。Vue2作为一个成熟的前端框架,以其轻量级和高效著称,而ElementUI则是一套专为桌面端设计的Vue2组件库,它提供了丰富的UI元素和组件,大大简化了后台管理系统的开发过程。本篇博客将深入介绍如何利用Vue2......