3、举例:

4、创建Map集合的对象:

5、所有方法:

6、Map注意事项:

二、HashMap(让我们来具体看看这Map星云把我迦迷得不要不要的小妖精)

1、盖亚!!!(无不无聊…)…概述:

2、可惜,我迦不是我迪啊,呵呵,大威天龙!!!(看法宝):

3、只是终究还是错付了,我迪还是受不鸟辣么的诱惑,实在是给得太多了。所以,注意了,这些事情早知道,早…快乐!(注意注意):

4、方法代码实例,让我们呼唤光吧,净化那丑陋的一切:

三、人间体大古,为了人界和平,再次使命召来,让我们高举代码,呼唤,光!!(案例怪兽来了)

四、我们要永远相信光,当黑暗来临,那个人,总会出现在你身旁!


引言

==

神说,“要有光…”

大古,“迪迦!!!”

bang的一拳锤在了神的脸上,“就是你天天喊?不知道我很忙吗,刚被绑架才被放出来,看着你们这些人就很不爽。装神弄鬼…”

拍了拍身上,虽然也没什么灰。

“要光去Map…嗯,是Map吧?去Map星云找去。闲的…”(谁也不知道我重复了三遍吧?)

说完,转过身纵身一跃,

“嚓~~”的一声,化为一道流光飞走了。

----------------------

众所周知,奥特曼分为人间体与变身后的奥特曼之体。所以,今天我们来详细说说,这Map星云的万千异象。

一:Map星云,集合(概要!!!,,,哦,不是,喊错了,盖亚!!!)

==================================

不要意思,盖亚今天不上班,都是我!

1、盖亚?(概要):


Interface Map<K,V>    K:键的类型;V:值的类型。

2、技能(特点):


将键映射到值的对象;

不能包含重复的键;

每个键可以映射到最多一个值。

3、举例:


Map中对应的key与value:

“大古” , “迪迦奥特曼”

“高山” , “盖亚奥特曼”

“李向阳” , “帝皇侠”

4、创建Map集合的对象:


多态的方式

具体的实现类HashMapHashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、weakHashMap…(说些常用的)


5、所有方法:


  • | Modifier and Type | 方法 | 描述 |
    | --- | --- | --- |
    | `void` | `[clear]( )​()` |
    从该地图中删除所有的映射(可选操作)。
     |
    | `default [V]( )` | `[compute]( )​([K]( ) key, [BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    尝试计算指定键的映射及其当前映射值(如果没有当前映射,则 `null` )。
     |
    | `default [V]( )` | `[computeIfAbsent]( )​([K]( ) key, [Function]( )<? super [K]( ),? extends [V]( )> mappingFunction)` |
    如果指定的键尚未与值相关联(或映射到 `null` ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是 `null` 。
     |
    | `default [V]( )` | `[computeIfPresent]( )​([K]( ) key, [BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。
     |
    | `boolean` | `[containsKey]( )​([Object]( ) key)` |
    如果此映射包含指定键的映射,则返回 `true` 。
     |
    | `boolean` | `[containsValue]( )​([Object]( ) value)` |
    如果此映射将一个或多个键映射到指定的值,则返回 `true` 。
     |
    | `static <K,V> [Map.Entry]( )<K,V>` | `[entry]( )​(K k, V v)` |
    返回包含给定键和值的不可变[Map.Entry]( ) 。
     |

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

     | `[Set]( )<[Map.Entry]( )<[K]( ),[V]( )>>` | `[entrySet]( )​()` |
    返回此地图中包含的映射的[Set]( )视图。
     |
    | `boolean` | `[equals]( )​([Object]( ) o)` |
    将指定的对象与此映射进行比较以获得相等性。
     |
    | `default void` | `[forEach]( )​([BiConsumer]( )<? super [K]( ),? super [V]( )> action)` |
    对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
     |
    | `[V]( )` | `[get]( )​([Object]( ) key)` |
    返回指定键映射到的值,如果此映射不包含该键的映射,则返回 `null` 。
     |
    | `default [V]( )` | `[getOrDefault]( )​([Object]( ) key, [V]( ) defaultValue)` |
    返回指定键映射到的值,如果此映射不包含该键的映射,则返回 `defaultValue` 。
     |
    | `int` | `[hashCode]( )​()` |
    返回此地图的哈希码值。
     |
    | `boolean` | `[isEmpty]( )​()` |
    如果此映射不包含键值映射,则返回 `true` 。
     |
    | `[Set]( )<[K]( )>` | `[keySet]( )​()` |
    返回此地图中包含的键的[Set]( )视图。
     |
    | `default [V]( )` | `[merge]( )​([K]( ) key, [V]( ) value, [BiFunction]( )<? super [V]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​()` |
    返回一个包含零映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1)` |
    返回包含单个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2)` |
    返回包含两个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3)` |
    返回包含三个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4)` |
    返回包含四个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5)` |
    返回一个包含五个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6)` |
    返回包含六个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7)` |
    返回包含七个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8)` |
    返回包含八个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9)` |
    返回包含九个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[of]( )​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10)` |
    返回包含十个映射的不可变地图。
     |
    | `static <K,V> [Map]( )<K,V>` | `[ofEntries]( )​([Map.Entry]( )<? extends K,? extends V>... entries)` |
    返回包含从给定条目提取的键和值的不可变地图。
     |
    | `[V]( )` | `[put]( )​([K]( ) key, [V]( ) value)` |
    将指定的值与该映射中的指定键相关联(可选操作)。
     |
    | `void` | `[putAll]( )​([Map]( )<? extends [K]( ),? extends [V]( )> m)` |
    将指定地图的所有映射复制到此映射(可选操作)。
     |
    | `default [V]( )` | `[putIfAbsent]( )​([K]( ) key, [V]( ) value)` |
    如果指定的键尚未与值相关联(或映射到 `null` )将其与给定值相关联并返回 `null` ,否则返回当前值。
     |
    | `[V]( )` | `[remove]( )​([Object]( ) key)` |
    如果存在(从可选的操作),从该地图中删除一个键的映射。
     |
    | `default boolean` | `[remove]( )​([Object]( ) key, [Object]( ) value)` |
    仅当指定的密钥当前映射到指定的值时删除该条目。
     |
    | `default [V]( )` | `[replace]( )​([K]( ) key, [V]( ) value)` |
    只有当目标映射到某个值时,才能替换指定键的条目。
     |
    | `default boolean` | `[replace]( )​([K]( ) key, [V]( ) oldValue, [V]( ) newValue)` |
    仅当当前映射到指定的值时,才能替换指定键的条目。
     |
    | `default void` | `[replaceAll]( )​([BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> function)` |
    将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。
     |
    | `int` | `[size]( )​()` |
    返回此地图中键值映射的数量。
     |
    | `[Collection]( )<[V]( )>` | `[values]( )​()` |
    返回此地图中包含的值的[Collection]( )视图。
     |

6、Map注意事项:


  • Map接口提供了三个_集合视图_ ,允许将映射的内容视为一组键,值的集合或键值映射集合。 地图的_顺序_被定义为其中在地图上的集合视图迭代返回元素的顺序。 一些地图实现,如TreeMap类,对其顺序做出特定的保证; 其他人,像HashMap类,不要。
注意:如果使用可变对象作为地图键,必须非常小心。 如果对象的值以影响`equals`比较的方式更改,而对象是地图中的键,则不会指定映射的行为。 这个禁令的一个特殊情况是,地图不允许将自己包含在内。 虽然地图可以将其本身作为一个值,但建议您非常小心: `equals`和`hashCode`方法在这样的地图上已经不太明确。
所有通用映射实现类应提供两个“标准”构造函数:一个创建空映射的void(无参数)构造函数和一个具有类型为`Map`的单个参数的构造函数,它创建一个具有相同键值的新映射映射作为参数。 实际上,后一个构造函数允许用户复制任何地图,产生所需类的等效地图。 没有办法强制执行此建议(因为接口不能包含构造函数),而JDK中的所有通用映射实现都符合要求。
如果此映射不支持此操作,则此接口中包含的“破坏性”方法(即修改其操作的映射的方法)将被指定为抛出`UnsupportedOperationException` 。 如果是这种情况,如果调用对地图没有影响,这些方法可能可以但不是必须抛出`UnsupportedOperationException` 。 例如,在不可修改的地图上调用[putAll(Map)]( )")方法可能会将其映射为“叠加”的地图空白时,但不是必须抛出异常。
一些地图实现对它们可能包含的键和值有限制。 例如,一些实现禁止空键和值,有些对键的类型有限制。 尝试插入不合格的键或值会引发未经检查的异常,通常为`NullPointerException`或`ClassCastException` 。 尝试查询不合格键或值的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,尝试对不符合条件的密钥或值的操作,其完成不会导致将不合格元素插入到地图中可能会导致异常或可能成功执行该选项。 此异常在此接口的规范中标记为“可选”。
Collections Framework接口中的许多方法都是按照[equals]( )方法进行定义的。 例如, [containsKey(Object key)]( )")方法的规范说:“当且仅当此映射包含`k`的映射关系`true`时才返回`(key==null ? k==null : key.equals(k))` 。 该规范_不_应该被解释为意味着调用`Map.containsKey`与非空参数`key`会导致`key.equals(k)`被调用的任意键`k` 。 实现可以自由地实现优化,从而避免`equals`调用,例如,首先比较两个密钥的哈希码。 ( [Object.hashCode()]( )")规范保证具有不等的哈希码的两个对象不能相等。)更一般地,各种Collections Framework接口的实现可以随意利用底层的[Object]( )方法的指定行为,无论执行者认为合适。
执行递归遍历地图的一些地图操作可能会失败,并且地图直接或间接包含自身的自引用实例有异常。 这包括`clone()` , `equals()` , `hashCode()`和`toString()`方法。 实现可以可选地处理自引用场景,然而大多数当前实现不这样做。

二、HashMap(让我们来具体看看这Map星云把我迦迷得不要不要的小妖精)

======================================

1、盖亚!!!(无不无聊…)…概述:


“不好意思…我不无聊!!”

  • HashMap是基于哈希表的实现的Map接口。 该实现提供了所有可选的映射操作,并允许null值和null密钥。 ( HashMap类大致相当于Hashtable ,除了它是不同步的,并允许null)。这个类不能保证地图的顺序; 特别是,它不能保证订单在一段时间内保持不变。

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

“只要我足够强,谁来都没用!Map星云都是我的。”

“来啊,造作啊,来哇,快活啊。”

2、可惜,我迦不是我迪啊,呵呵,大威天龙!!!(看法宝):


  • | Modifier and Type | 方法 | 描述 |
    | --- | --- | --- |
    | `void` | `[clear]( )​()` |
    从这张地图中删除所有的映射。
     |
    | `[Object]( )` | `[clone]( )​()` |
    返回此 `HashMap`实例的浅拷贝:键和值本身不被克隆。
     |
    | `[V]( )` | `[compute]( )​([K]( ) key, [BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    尝试计算指定密钥及其当前映射值的映射(如果没有当前映射,则 `null` )。
     |
    | `[V]( )` | `[computeIfAbsent]( )​([K]( ) key, [Function]( )<? super [K]( ),? extends [V]( )> mappingFunction)` |
    如果指定的键尚未与值相关联(或映射到 `null` ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非 `null` 。
     |
    | `[V]( )` | `[computeIfPresent]( )​([K]( ) key, [BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。
     |
    | `boolean` | `[containsKey]( )​([Object]( ) key)` |
    如果此映射包含指定键的映射,则返回 `true` 。
     |
    | `boolean` | `[containsValue]( )​([Object]( ) value)` |
    如果此映射将一个或多个键映射到指定的值,则返回 `true` 。
     |
    | `[Set]( )<[Map.Entry]( )<[K]( ),[V]( )>>` | `[entrySet]( )​()` |
    返回此地图中包含的映射的[Set]( )视图。
     |
    | `void` | `[forEach]( )​([BiConsumer]( )<? super [K]( ),? super [V]( )> action)` |
    对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
     |
    | `[V]( )` | `[get]( )​([Object]( ) key)` |
    返回指定键映射到的值,如果此映射不包含键的映射,则返回 `null` 。
     |
    | `[V]( )` | `[getOrDefault]( )​([Object]( ) key, [V]( ) defaultValue)` |
    返回指定键映射到的值,如果此映射不包含该键的映射,则返回 `defaultValue` 。
     |
    | `boolean` | `[isEmpty]( )​()` |
    如果此映射不包含键值映射,则返回 `true` 。
     |
    | `[Set]( )<[K]( )>` | `[keySet]( )​()` |
    返回此地图中包含的键的[Set]( )视图。
     |
    | `[V]( )` | `[merge]( )​([K]( ) key, [V]( ) value, [BiFunction]( )<? super [V]( ),? super [V]( ),? extends [V]( )> remappingFunction)` |
    如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。
     |
    | `[V]( )` | `[put]( )​([K]( ) key, [V]( ) value)` |
    将指定的值与此映射中的指定键相关联。
     |
    | `void` | `[putAll]( )​([Map]( )<? extends [K]( ),? extends [V]( )> m)` |
    将指定地图的所有映射复制到此地图。
     |
    | `[V]( )` | `[putIfAbsent]( )​([K]( ) key, [V]( ) value)` |
    如果指定的键尚未与值相关联(或映射到 `null` )将其与给定值相关联并返回 `null` ,否则返回当前值。
     |
    | `[V]( )` | `[remove]( )​([Object]( ) key)` |
    从该地图中删除指定键的映射(如果存在)。
     |
    | `boolean` | `[remove]( )​([Object]( ) key, [Object]( ) value)` |
    仅当指定的密钥当前映射到指定的值时删除该条目。
     |
    | `[V]( )` | `[replace]( )​([K]( ) key, [V]( ) value)` |
    只有当目标映射到某个值时,才能替换指定键的条目。
     |
    | `boolean` | `[replace]( )​([K]( ) key, [V]( ) oldValue, [V]( ) newValue)` |
    仅当当前映射到指定的值时,才能替换指定键的条目。
     |
    | `void` | `[replaceAll]( )​([BiFunction]( )<? super [K]( ),? super [V]( ),? extends [V]( )> function)` |
    将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。
     |
    | `int` | `[size]( )​()` |
    返回此地图中键值映射的数量。
     |
    | `[Collection]( )<[V]( )>` | `[values]( )​()` |
    返回此地图中包含的值的[Collection]( )视图。
     |

3、只是终究还是错付了,我迪还是受不鸟辣么的诱惑,实在是给得太多了。所以,注意了,这些事情早知道,早…快乐!(注意注意):


HashMap的键和值的类型可以是String类型,也可以是其他数据的包装类类型

Map集合的元素的添加并不是Collection集合的add()方法,而是Put()方法。

Map的遍历也不再是for循环或是while循环去integer迭代什么了,而是用到两种新的遍历方式,通过keySet或是entrySet的方法。

只是终究,噩梦都会到来,再美好的一切,都会失去,哭也没用了:

4、方法代码实例,让我们呼唤光吧,净化那丑陋的一切:


 

让我们来整一个全局观,测试测试这些方法。

java-集合-Map(双列)——迪迦重制版,2021Java开发社招面试解答之性能优化相关推荐

  1. java-集合-Map(双列)——迪迦重制版

    目录 引言 一:Map星云,集合(概要!!!,,,哦,不是,喊错了,盖亚!!!) 1.盖亚?(概要): 2.技能(特点): 3.举例: 4.创建Map集合的对象: 5.所有方法: 6.Map注意事项: ...

  2. Java开发社招面试总结!docker镜像导出img格式文件

    1.为什么要使用消息队列? 分析:一个用消息队列的人,不知道为啥用,有点尴尬.没有复习这点,很容易被问蒙,然后就开始胡扯了. 回答:这个问题,咱只答三个最主要的应用场景(不可否认还有其他的,但是只答三 ...

  3. Java开发社招面试总结!长春java开发能开多少钱

    前言 苦苦寻觅找工作之间,殊不知今日之时乃我心之痛,难道是我不配拥有工作嘛.自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦.每每想到不由心中一紧.正处为难之间,手机忽然来了个短信 ...

  4. Java开发社招面试经验:java下载安装包

    前言 前段时间,我向一位在阿里的朋友寻求进大厂的秘诀,他分享给我一份阿里内部资料--JAVA核心进阶手册,仔细翻阅一番才知道里面收纳整理的知识可真是齐全,不得不来感叹一番- 我将JAVA核心进阶手册大 ...

  5. java 中遍历双列集合_获取单列集合,双列集合,数组的Stream流对象以及简单操作...

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

  6. Java——集合(Map集合的两种迭代)

    一,Map集合的第一种迭代 Map集合的第一种迭代,通过get(key)方法,根据键去获取值 package com.wsq.map;import java.util.HashMap; import ...

  7. java集合 — — Map集合

    十.Map集合 10.1.概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一对应的关系,就叫做映射.Java提供了专门的集台类用来存放这种对 ...

  8. Java集合Map,set, list 之间的转换

    Java集合Map,set, list 之间的转换 前言: 通过思维导图复习联系,看到一个HashMap排序题上机题之后有的一个感想,题目如下,看看你能时间出来么? 已知一个HashMap<In ...

  9. 从阿里社招面试,看“野生”Java程序员的学习道路

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

最新文章

  1. 奥特linux系统监控,奥特曼知识大挑战答案
  2. swift 网络请求中含有特殊字符的解决方案
  3. js控制图像等比例缩放
  4. cocos2dx中菜单menu 和 menuItem
  5. 通过CMD命令行获取文件夹下的所有文件名称(电脑小白专用)
  6. 系统学习机器学习之非参数方法
  7. 视觉在无人驾驶中的应用及分类_紫外光在机器视觉中的应用
  8. java faker_小飞博客-java测试造数据神器JavaFaker
  9. 【Android Jetpack】Room——基本使用篇
  10. 大数据(042)机器学习【神经网络】
  11. 超级简单的 RocketMQ 流量削峰实战
  12. cox(Quaro)对设计的崭新定义,改变我的人生
  13. Win10s分屏设置
  14. python安装wheel,opencv与其它模块
  15. 用C++11的多线程读文件
  16. 根据百度地图API自定义切换地图类型为卫星或普通
  17. 剑灵电信6区服务器位置,剑灵电信6区哪个服务器人多
  18. IBM的APAR搜索入口地址
  19. ssm+jsp计算机毕业设计高速公路管理系统设计与实现e6hx6(程序+LW+源码+远程部署)
  20. Ubuntu系统的USB禁用取消方式

热门文章

  1. 汽车行业供应链管理解决方案:打造企业协同智能供应链
  2. 布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析
  3. 前端img不显示服务器图片,【前端】img 加上crossOrigin=”anonymous”之后导致图片无法显示...
  4. 第二十四节:动态加载JS和动态加载CSS
  5. Turtlebot 3 rplidar bringup
  6. java上传图片到本地磁盘
  7. C语言strchr函数:字符串查找
  8. 光刻原理--光的衍射
  9. 图片解码python
  10. chrome浏览器启用本地exe应用程序