[总结]Map: C++ V.S. Java
整理一下Map在Java 和 C++的基本操作,欢迎大家一起交流学习。
附: 对于在C++中,选用map 还是 unordered_map,可以参考这篇讨论。相对简单粗暴的结论是,unordered_map更快一些,因为unordered_map在内部使用的是哈希表,而map在内部使用的是红黑树的结构,所以对于查找操作,前者是O(1), 后者其实是O(lgN)。
主要区别:
- c++中主要可以用 [] 来进行操作(add,update,access); Java 是没有[] 的,相应操作为 put(key,value), get(key)
- 对于通过key查找,c++采用iteator的迭代器操作,java中使用 containsKey(key)
C++ | Java | 描述 | |
构造 | unordered_map<string,int>salary | Map<String, Integer> salaryMap = new HashMap<String, Integer>(); | |
增加 | salary["Tom"] = 10; | salaryMap.put("Tom", 10); |
更新:如果存在 加入:如果不存在 |
删除 | salary.erase("Tom"); | salary.remove("Tom"); | 如果不存在,忽略 |
查找 |
if (salary.find("Tom") != salary.end()) { cout << "Tom: " << salary["Tom"] ; } |
if (salaryMap.containsKey("Tom")) { System.out.println("Tom: " + salaryMap.get("Tom")); } |
通过key来查询 |
修改 | salary["Tom"] = 20; | salaryMap.put("Tom", 20); | |
容量 |
salary.size(); salary.empty(); |
salaryMap.size(); salaryMap.isEmpty(); |
|
清除 | salary.clear(); | salary.clear() | |
引用 | #include <unordered_map> |
import java.util.Map; import java.util.HashMap; |