集合体系之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. Python 从入门到进阶之路(七)

    之前的文章我们简单介绍了一下 Python 中异常处理,本篇文章我们来看一下 Python 中 is 和 == 的区别及深拷贝和浅拷贝. 我们先来看一下在 Python 中的双等号 == . == 是 ...

  2. Java描述设计模式(02):简单工厂模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根 ...

  3. Java 添加Word页眉、页脚

    本篇文章将介绍通过java程序来添加Word页眉页脚的方法.鉴于在不同文档中,对页眉页脚的操作要求不同,文章将分别从以下几种情况来阐述: 1.添加页眉页脚 添加图片到页眉 添加文本到页眉 添加页码 2 ...

  4. javaWeb技术第二篇之CSS、事件和案例

    <!--内联式 CSS (层叠样式表) 编辑 层叠样式表(英文全称:Cascading Style Sheets) CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式 ...

  5. 77777 77777(2) WriteUp 绕waf技巧学习

    两个题的代码都是一样的 只是waf不一样 贴出代码 <?php function update_point($p,$point){ global $link; $q = sprintf(&quo ...

  6. 中文版 Apple 官方 Swift 教程《The Swift Programming Language》

    简介 欢迎使用 Swift 关于 Swift 版本兼容性 Swift 初见 Swift 版本历史记录 Swift 教程 基础部分 基本运算符 字符串和字符 集合类型 控制流 函数 闭包 枚举 类和结构 ...

  7. Kafka学习(一)

    官网 kafka.apache.org 集群部署 消息中间键 --> 分布式流式平台 Kafka Streaming Flume: 1个进程包含三个角色 source channle sink ...

  8. JVM java内存区域的介绍

    jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个 先上图一: 总的就是 java的内存模型 内存模型又分堆内存(heap)和方法区 ...

  9. Centos 静态网络配置

    cat /etc/sysconfig/network-scripts/ifcfg-ens33 DEFROUTE="yes" IPV4_FAILURE_FATAL="no& ...

  10. MVC(基础一)

    MVC学习之前必须掌握的c#基础知识 一.类自动属性 public class Person { //自动属性 public string Name { get; set; } private int ...