java中的Map集合
Map接口
Map为一个接口。实现Map接口的类都有一个特点:有键值对,将键映射到值的对象。 Map不能包含重复的键,每个键可以映射到最多一个值。
Map常见的接口方法有:
V put(K key, V value) 将指定的值与该映射中的指定键相关联(注意,返回值是指被覆盖的value值)
V remove(Object key) 如果存在(从可选的操作),从该地图中删除一个键的映射
boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true
boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定的值,则返回 true
Collection<V> values() 返回此地图中包含的值的Collection视图。
int size() 返回此地图中键值映射的数量
V get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射
Set<K> keySet() 返回此地图中包含的键的Set视图
Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图
示例1:(遍历Map集合,思路:先获取到键的集合,遍历集合,get方法取出值)
public class Test11 {
// Map集合没有生成Iterator的方法,所以要用以下方法遍历
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<String> set = hm.keySet();
/*方式1:
Iterator<String> it = set.iterator();
while (it.hasNext()){
String s = it.next();
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}*/
// 方式2:
for (String s : set) {
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}
}
}
示例2:(遍历Map集合,思路:把键值对作为一个对象存进集合,遍历集合,取出对象的属性)
public class Test12 {
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<Map.Entry<String,Integer>> set = hm.entrySet();
/*方式1:
Iterator<Map.Entry<String,Integer>> it = set.iterator();
while (it.hasNext()){
Map.Entry<String,Integer> entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());*/
// 方式2:
for (Map.Entry<String,Integer> entry: set) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
HashMap类
上面的接口方法基本都是HashMap实现的。所以用起来基本一样,不多说。同样的,LinkedHashMap类继承HashMap类,用法基本一样,只是LinkedHashMap底层用了链表实现而已。
TreeMap类
可以看做能排序的HashMap。原理其实和TreeSet一样......
关于排序可以参考TreeSet类:https://www.cnblogs.com/chichung/p/10252495.html
Hashtable类
Hashtable与HashSet的关系和ArrayList与Vector的关系几乎一样。
- 共同点:
底层都是哈希算法,都是双列集合
- 区别:
1.HashMap是线程不安全的,效率高,JDK1.2版本出现的
Hashtable是线程安全的,效率低,JDK1.0版本出现的
2.HashMap可以存储null键和null值
Hashtable不可以存储null键和null值
java中的Map集合的更多相关文章
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- Java中的map集合顺序如何与添加顺序一样
一般使用map用的最多的就是hashmap,但是hashmap里面的元素是不按添加顺序的,那么除了使用hashmap外,还有什么map接口的实现类可以用呢? 这里有2个,treeMap和linkedH ...
- 在java中获取Map集合中的key和value值
- Map java中的map 如何修改Map中的对应元素
Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
- Java Collection、Map集合总结
1.Java中的Collection集合总结 Collection |---List(存储有序,可重复) |---ArrayList 底层数据结构是数组,查询快,增删慢. 线程不安全.效率高 |--- ...
- 黑马程序员——JAVA基础之Map集合
------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...
- JAVA中关于Map的九大问题
通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
随机推荐
- [学习笔记]min-max容斥
[Learning]min-max容斥以及推广 min-max容斥 就是max(a,b)=min(a)+min(b)-min(a,b) max(a,b,c)=a+b+c-min(a,b)-min(a, ...
- ZOJ 2532 Internship 求隔边
Internship Time Limit: 5 Seconds Memory Limit: 32768 KB CIA headquarter collects data from acro ...
- 二叉树系列 - 二叉搜索树 - [LeetCode] 中序遍历中利用 pre节点避免额外空间。题:Recover Binary Search Tree,Validate Binary Search Tree
二叉搜索树是常用的概念,它的定义如下: The left subtree of a node contains only nodes with keys less than the node's ke ...
- git代码冲突
如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, 在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the f ...
- mysql Innodb索引
基本概念 对于mysql目前的默认存储引擎Innodb来说,索引分为2个,一个是聚集索引,一个是普通索引(也叫二级索引). 聚集索引:聚集索引的顺序和数据在磁盘的顺序一致,因此查询时使用聚集索引,效率 ...
- uva 10683 Fill
https://vjudge.net/problem/UVA-10603 题意: 倒水问题,输出最少的倒水量和目标水量 如果无解,目标水量就是尽可能接近给定点的目标水量,但不得大于给定的目标水量 推推 ...
- asyncio 实现 aiohttp
#asyncio 没有提供http协议的接口 aiohttp import asyncio import socket from urllib.parse import urlparse async ...
- Git 常见工作流
多种多样的工作流使得在项目中实施Git时变得难以选择.这份教程提供了一个出发点,调查企业团队最常见的Git工作流. 阅读的时候,请记住工作流应该是一种规范而不是金科玉律.我们希望向你展示所有工作流,让 ...
- XAMPP 启动mysql报错 InnoDB: Error: could not open single-table tablespace file……
昨天安装了最新版本XAMPP for Windows 1.8.3. 今天早上打开XAMPP双击mysql Start按钮报错,如下(部分截取): 2013-09-17 10:12:02 9012 [E ...
- .NET RabbitMQ
在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这 种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短 ...