[总结]Map: C++ V.S. Java

整理一下Map在Java 和 C++的基本操作,欢迎大家一起交流学习。

附: 对于在C++中,选用map 还是 unordered_map,可以参考这篇讨论。相对简单粗暴的结论是,unordered_map更快一些,因为unordered_map在内部使用的是哈希表,而map在内部使用的是红黑树的结构,所以对于查找操作,前者是O(1), 后者其实是O(lgN)。

主要区别:

  1. c++中主要可以用 [] 来进行操作(add,update,access); Java 是没有[] 的,相应操作为 put(key,value), get(key)
  2. 对于通过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;

 
 
时间: 2024-12-11 12:49:25

[总结]Map: C++ V.S. Java的相关文章

简单组合java.util.Map&lt;K,V&gt;实现Map&lt;K,P,V&gt;

java.util.Map<K,V>为单键对单值,有时需要双键对单值,因此基于Map<K,V>可以简单实现一个Map<K,P,V>. 接口定义:下载 Java代码 package cc.lixiaohui.demo.javassist.proxy.util; import java.util.Collection; import java.util.Set; /** * 两个键的复合map * <pre> * key------+ *          |-

关于jsp利用EL和struts2标签来遍历ValueStack的东东 ------&gt; List&lt;Map&lt;K,V&gt;&gt; 以及 Map&lt;K,&lt;List&lt;xxx&gt;&gt;&gt; 的结构遍历

//第一种结构Map<K,<List<xxx>>> <body> <% //显示map<String,List<Object>> Map map = new HashMap<String,List<String>>(); List list = new ArrayList<String>(); list.add("list1-1"); list.add("list

多个List&lt;Map&lt;K,V&gt;&gt;整合去重--初次尝试

工作中遇到了,多个List<Map<K,V>>整合去重排序的问题,自己用比较笨拙的方法处理,希望大家有新的想法分享一下: 步骤1.整合Map集合的key值,去重后放到一个List集合里 List<Map<String, Object>> touping = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> zong = new Arr

Cocos2d-x3.0模版容器详解之——cocos2d::Vector&lt;T&gt;, cocos2d::Map&lt;K,V&gt;, cocos2d::Value

Cocos2d-x3.0模版容器详解之一:cocos2d::Vector<T>  http://www.cocoachina.com/bbs/read.php?tid=199793Cocos2d-x3.0模版容器详解之二:cocos2d::Map<K,V>  http://www.cocoachina.com/bbs/read.php?tid=199916Cocos2d-x3.0模版容器详解之三:cocos2d::Value  http://www.cocoachina.com/b

cocos基础教程(4)数据结构介绍之cocos2d::Map&lt;K,V&gt;

1.概述 cocos2d::Map<K,V> 是一个内部使用了 std::unordered_map的关联容器模版. std::unordered_map 是一个存储了由key-value键值对组合成构成的关联性容器,允许基于键对单个元素进行快速检索. 2.模版参数 K - key value的类型. map中元素都由它的 key值作为唯一标识. V - mapped value的类型. T 必须是一个指向 cocos2d::Object 子类对象的指针. 3.内存管理 如果你在栈上声明了一个

ES6中的Map集合(与java里类似)

Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制 为了解决这个问题,ES6提供了Map数据结构.它类似于对象,也是键值对的集合,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键.也就是说,Object结构提供了"字符串-值"的对应,Map结构提供

JSONObject.fromObject(map)(JSON与JAVA数据的转换)

JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么一句,是后台的封装数据. JSONObject jo = JSONObject.fromObject(map);常见的java代码转换成json 1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); lis

Mybatis返回List&lt;Map&lt;K,V&gt;&gt;

最终映射的字段名 会被作为 hashMap 的 key , <!-- TODO 测试返回 HashMap--> <resultMap id="testResultMap" type="java.util.HashMap"> <result column="id" property="id" jdbcType="INTEGER" javaType="int"

Java------遍历Map&lt;k,v&gt;的方法

1. public class MapAction extends ActionSupport{ private Map<String, User> map = new HashMap<>(); public Map<String, User> getMap() { return map; } public void setMap(Map<String, User> map) { this.map = map; } @Override public Stri