集合体系之Map集合

##Map<K,V>( 接口 )

特点:将键映射到值对象,一个映射不能包含重复的键:每个键只能映射一个值

Map集合与Collection集合的区别

​ Map集合存储元素成对出现,其键唯一值可重复,为双列集合

​ Collection集合存储元素单独出现,其List子类的元素有序,可重复。其Set子类的元素唯一,为单列集合

注意:

​ Map集合的数据结构只与键有关,与值无关

​ Collection集合的数据结构针对元素有效

Map集合功能概述

添加功能

  • put

V put(K key,V value):将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个
该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m
包含键 k 的映射关系)。
  • putAll

void putAll(Map<? extends K,? extends V> m):从指定映射中将所有映射关系复制到此映射中
(可选操作)。对于指定映射中的每个键 k 到值 v 的映射关系,此调用等效于对此映射调用一次
put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的。

删除功能

  • clear

void clear():从此映射中移除所有映射关系(可选操作)。此调用返回后,该映射将为空。
  • remove

V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。

判断功能

  • containsKey

boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true
  • containsValue

boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。
  • isEmpty

boolean isEmpty():如果此映射未包含键-值映射关系,则返回 true。

获取功能

  • entrySet

Set<Map.Entry<K,V>> entrySet():返回的是键值对对象集合
import java.util.HashMap;
import java.util.Map;
import java.util.Set; public class map_entrySet {
public static void main(String[] args) {
Map<Integer,Integer> m = new HashMap<>();
m.put(1,11);
m.put(2,22);
m.put(3,33);
m.put(4,44);
m.put(5,55);
//返回一个Set集合,其存储类型为Map.Entry<Integer,Integer>接口
Set<Map.Entry<Integer,Integer>> ent = m.entrySet();
for (Map.Entry<Integer,Integer> ma : ent){
System.out.println(ma.getKey() + "---" + ma.getValue());
}
}
} out:
1---11
2---22
3---33
4---44
5---55
  • get

V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
  • keySet

Set<K> keySet():获取集合中所有键的集合
  • values

Collection<V> values():获取集合中所有值的集合

长度功能

  • size

int size():返回集合中键值对的个数

HashMap<K,V>(类)

依赖于哈希表的Map借口实现,哈希表的作用是确保键的唯一性,

无特殊方法

LinkedHashMap<K,V>(类)

是Map接口的哈希表与链表实现,具有可预知的迭代顺序

TreeMap<K,V>(类)

是基于红黑树的Map接口实现。

使用同TreeSet

Hashtable<K,V>(类)

类似于HashMap<K,V>,在HashMap<K,V>出现之前,由于线程安全效率低,所以被HashMap<K,V>替代。

一些问题

Hashtable和HashMap区别

  • Hashtable线程安全,效率低,不允许null键和null值
  • HashMap:线程不安全,效率高,允许null键和null值

List,Set,Map等接口是否都继承Map接口

  • List,Set不是继承自Map接口,它们继承自Collection接口
  • Map本身就是一个顶层接口

Javase之集合体系(4)之Map集合的更多相关文章

  1. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  2. Java基础(二十三)集合(6)Map集合

    Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...

  3. 第1节 Scala基础语法:13、list集合的定义和操作;16、set集合;17、map集合

    list.+:5 , list.::5: 在list集合头部添加单个元素5 : li1.:+(5):在list集合尾部添加单个元素5: li1++li2,li1:::li2:在li1集合尾部添加il2 ...

  4. 集合框架—常用的map集合

    1.Collections.synchronizedMap() 实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁. ...

  5. Java集合的实现细节—Set集合和Map集合

    Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...

  6. 07java进阶——集合框架3(Map)

    1.映射表(Map) 1.1基本概念 1.2Map中常用的方法 package cn.jxufe.java.chapter7; import java.util.HashMap; import jav ...

  7. 详解 Map集合

    (请关注 本人"集合总集篇"博文--<详解 集合框架>) 首先,本人来讲解下 Map集合 的特点: Map集合 的特点: 特点: 通过 键 映射到 值的对象 一个 映射 ...

  8. 【读书笔记】【深入理解ES6】#7-Set集合和Map集合

    ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...

  9. java中Map集合的常用方法 (转)

    原文地址:https://www.cnblogs.com/xiaostudy/p/9510763.html Map集合和Collection集合的区别 Map集合是有Key和Value的,Collec ...

  10. java中Map集合的常用方法

    Map集合和Collection集合的区别 Map集合是有Key和Value的,Collection集合是只有Value. Collection集合底层也是有Key和Value,只是隐藏起来. V p ...

随机推荐

  1. 【Java基础】JDBC简明教程

    目录 1. 常用类 2. JDBC编程步骤 3. 事务处理 4. 数据库连接池 5. JDBC列子代码 6. 使用Apache的JDBC工具类 虽然在平时的开发过程中我们不会直接使JDBC的API来操 ...

  2. JavaScript空字符串判断

    JavaScript空字符串判断 本文完整示例代码GIT仓: 测试用例完整代码:isNullOrEmpty jPublic GIT仓:jPublic 比较常见写法 if (str == 'undefi ...

  3. 一起学SpringMVC之入门篇

    本文属于SpringMVC的入门篇,属于基础知识,仅供学习分享使用,如有不足之处,还请指正. 什么是SpringMVC ? SpringMVC是一个基于Spring的MVC框架,继承了Spring的优 ...

  4. docker redis使用

    启动方式一:docker默认启动redis 1.拉取镜像 docker pull redis:lastest (若不使用版本号,如docker pull redis,默认拉取最新镜像) 2.启动red ...

  5. windows提权

    提权辅助 https://bugs.hacking8.com/tiquan/

  6. Mac版Sourcetree的安装使用

    本人也在亲测,感觉很有效,和大家分享,参考链接: https://www.jianshu.com/p/b8d0547a8449

  7. JS If...Else

    JS If...Else 条件语句用于基于不同的条件来执行不同的动作. 条件语句 通常在写代码时,您总是需要为不同的决定来执行不同的动作.您可以在代码中使用条件语句来完成该任务. 在 JavaScri ...

  8. 个人项目开源之Django图书借阅系统源代码

    Django写的模拟图书借阅系统源代码已开源到码云 源代码

  9. Linux日志中出现大量dhclient mesage浅析

    最近检查发现一台Linux服务器,发现其日志里面有大量下面信息,其中部分信息做了脱敏处理.其中一个地址A(192.168.AAA.AAA) 为DNS服务器地址,地址B(192.168.BBB.BBB) ...

  10. licode(1) Basic Example 客户端解析

    整体 在浏览其中输入https://dst_host_domain:13004后, 请求了index.html,该文件在licode\extras\basic_example\public\index ...