Javase之集合体系(4)之Map集合
集合体系之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集合的更多相关文章
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- Java基础(二十三)集合(6)Map集合
Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...
- 第1节 Scala基础语法:13、list集合的定义和操作;16、set集合;17、map集合
list.+:5 , list.::5: 在list集合头部添加单个元素5 : li1.:+(5):在list集合尾部添加单个元素5: li1++li2,li1:::li2:在li1集合尾部添加il2 ...
- 集合框架—常用的map集合
1.Collections.synchronizedMap() 实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁. ...
- Java集合的实现细节—Set集合和Map集合
Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...
- 07java进阶——集合框架3(Map)
1.映射表(Map) 1.1基本概念 1.2Map中常用的方法 package cn.jxufe.java.chapter7; import java.util.HashMap; import jav ...
- 详解 Map集合
(请关注 本人"集合总集篇"博文--<详解 集合框架>) 首先,本人来讲解下 Map集合 的特点: Map集合 的特点: 特点: 通过 键 映射到 值的对象 一个 映射 ...
- 【读书笔记】【深入理解ES6】#7-Set集合和Map集合
ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...
- java中Map集合的常用方法 (转)
原文地址:https://www.cnblogs.com/xiaostudy/p/9510763.html Map集合和Collection集合的区别 Map集合是有Key和Value的,Collec ...
- java中Map集合的常用方法
Map集合和Collection集合的区别 Map集合是有Key和Value的,Collection集合是只有Value. Collection集合底层也是有Key和Value,只是隐藏起来. V p ...
随机推荐
- 38条技巧优化PHP代码,来复习总结下吧
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; ...
- 被忽略的CSS规则
说起CSS规则,除了普通规则(属性和值,key:value),可能大家都会想到@media,@keyframes,@fontface等常用的,那剩余的大家是否有所了解呢. 我们先来看一看CSS有哪些规 ...
- Java中Atomic类的使用分析
1:为什么会出现Atomic类 在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的.为了达到线程安全的目的,我们通常会用synchro ...
- 第一篇随笔:用VB.NET搞点简单事情(1)
网络上能搜索到的爬虫文章大多是用python做的,也有少部分是C#做的(小声:所以用VB.NET也可以做爬虫.本文写的是第一步:获取网页) 使用代码前先imports以下内容 Imports Syst ...
- JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码
JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码 摘要:本文主要记录了在Windows上启动Tomcat后,命令行窗口出现乱码的问题及解决办法. 问题重现 在Windows ...
- vue之前端鉴权
vue项目前端鉴权方式常用的有以下三种: 1.渲染菜单时控制模块按钮的显示隐藏(不足:直接输入链接仍然可以访问模块) 2.在路由导航守卫中拦截,针对没有权限的模块进行重定向(不足:每次访问模块都需要鉴 ...
- Django 注意知识点(一)
本篇概述 Django Admin后台显示 多对多字段(如何) Django 模板 显示 多对多字段(如何) Django 将表单中上传的多对多字段存入数据库 (如何) Django 上传文件 ( ...
- grant localhost and % for mysql
- Scrapy安装和简单使用
模块安装 Windows 安装scrapy 需要安装依赖环境twisted,twisted又需要安装C++的依赖环境 pip install scrapy 时 如果出现twisted错误 在http ...
- Delphi 设置程序图标为系统默认图标
Windows VCL 程序: 1. 用文本编辑器打开Delphi项目的.dproj文件.2. 搜索关键字“<Icon_MainIcon>”,查找Icon_MainIcon元素.3. 将所 ...