集合体系之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. 38条技巧优化PHP代码,来复习总结下吧

    1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; ...

  2. 被忽略的CSS规则

    说起CSS规则,除了普通规则(属性和值,key:value),可能大家都会想到@media,@keyframes,@fontface等常用的,那剩余的大家是否有所了解呢. 我们先来看一看CSS有哪些规 ...

  3. Java中Atomic类的使用分析

    1:为什么会出现Atomic类 在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的.为了达到线程安全的目的,我们通常会用synchro ...

  4. 第一篇随笔:用VB.NET搞点简单事情(1)

    网络上能搜索到的爬虫文章大多是用python做的,也有少部分是C#做的(小声:所以用VB.NET也可以做爬虫.本文写的是第一步:获取网页) 使用代码前先imports以下内容 Imports Syst ...

  5. JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码

    JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码 摘要:本文主要记录了在Windows上启动Tomcat后,命令行窗口出现乱码的问题及解决办法. 问题重现 在Windows ...

  6. vue之前端鉴权

    vue项目前端鉴权方式常用的有以下三种: 1.渲染菜单时控制模块按钮的显示隐藏(不足:直接输入链接仍然可以访问模块) 2.在路由导航守卫中拦截,针对没有权限的模块进行重定向(不足:每次访问模块都需要鉴 ...

  7. Django 注意知识点(一)

    本篇概述 Django Admin后台显示 多对多字段(如何) Django 模板 显示 多对多字段(如何) Django 将表单中上传的多对多字段存入数据库 (如何)   Django 上传文件 ( ...

  8. grant localhost and % for mysql

  9. Scrapy安装和简单使用

    模块安装 Windows 安装scrapy 需要安装依赖环境twisted,twisted又需要安装C++的依赖环境 pip install scrapy  时 如果出现twisted错误 在http ...

  10. Delphi 设置程序图标为系统默认图标

    Windows VCL 程序: 1. 用文本编辑器打开Delphi项目的.dproj文件.2. 搜索关键字“<Icon_MainIcon>”,查找Icon_MainIcon元素.3. 将所 ...