`
ouyida3
  • 浏览: 47701 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java与c++的map使用比较

阅读更多

java和c++都有map,java的Map是接口,M大写;c++的map是实现好的类,m小写。

所以java一般需要使用HashMap,c++使用map。

 

c++的定义与设值:

#include <map>

map<string, int> inMap;

inMap.clear();

inMap.insert(make_pair("chargeId", 1));

 

java的定义与设值:

import java.util.HashMap;

import java.util.Map;

Map map = new HashMap();//jdk1.4或以前

Map<String,Integer> map = new HashMap<String,Integer>();//jdk1.5或以后

map.put("chargeId", 1);

 

map是STL里,需要include<map>。java在new的时候已经清空的内存,所以不需要c++这么麻烦的clear。

c++的insert和java的put差不多,但是c++需要麻烦的调用make_pair把键值对转化为一个结构体。

c++的map支持基本类型,但是java的是不支持的,只能用Integer,不能用int,put的时候只是自动装箱转化为Integer而已。

 

c++的取值:

map<string, int>::iterator it = inMap.find("chargeId");

int mapValue = 0;

if (it != inMap.end())

{

mapValue = it->second;

}

 

java的取值:

Integer i = map.get("chargeId") == null ? 0 : map.get("chargeId");//jdk1.5或以后

 

c++的取值真心麻烦啊,写这么多行代码。java的优雅就是这么来的。

c++的find相当于java的get,但是c++必须返回一个迭代器,你需要通过迭代器来判断获取。

结构体里也定义好了first和second,你想获取哪个就哪个。

而java把全部的获取都做好了,你只需要get一下。如果没有,则返回null。java的基本类型不能为null,所以不支持基本类型。

 

分享到:
评论

相关推荐

    利用Java的HashMap 改造C++ 的hash_map

    结合Java的HashMap中的一些优点,改进了C++ 的hash_map。 详细说明见我的博客:http://blog.csdn.net/mdj67887500/article/details/6907702

    移植Java代码到C++的技巧(整合)

    相比于Java,C++的STL也提供了map容器,其功能等同于Java中的TreeMap,至于HashMap,它并没有进入C++标准模板库。而幸运的是,现有的主流C++编译器供应商均提供了标准模板库的扩展包,并在该扩展包中实现了hash_map...

    MAP的遍历的讲解

    这是一人篇关于JAVA MAP遍历的讲解的文章,希望对你有用

    Java容器学习笔记:容器概览,容器中的设计模式,容器源码分析 - List,容器源码分析 - Map,容器源码分析 - 并发容

    Java编程语言的语法类似于C++,但是相比C++更简洁和易于理解。它采用了“一次编写,到处运行”的原则,即一次编写的程序可以在不同的操作系统上运行,这得益于Java虚拟机(JVM)的存在。JVM是Java的核心组成部分,它...

    java面试宝典

    41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名...

    JNI处理各种类型数据,不包含获取Java的HashMap

    JNI处理各种类型数据,不包含获取Java的HashMap;包含了java的工程和c++工程,可以查看代码,可以直接运行;同事包含了在网络上找的一些资料。

    基于List, Set, Map, Integer, String, Tuple, Deque模块的C++库

    基于List, Set, Map, Integer, String, Tuple, Deque模块实现一个像Python的内置类型一样优雅的C++库,与 Python 的容器库一样易于使用

    JAVA面试题最全集

    Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都...

    C++大学教程,一本适合初学者的入门教材(part1)

    1.9 Java、Internet与万维网 1.10 其他高级语言 1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的...

    java 面试题 总结

    从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、...

    Java C++ Python 哈希表 栈 字符串等非常实用的操作

    Java中栈的pop操作,会返回pop的值,但C++中栈的pop操作不会返回pop的值 哈希表 创建哈希表: HashMacp map=new HashMap(){{ put(')','('); put(']','('); put('}','{'); }}; 字符串和字符 将字符串转化为字符数组:...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Other C++ Features Reference Arguments Function Overloading Default Arguments Variable-Length Arrays and alloca() Friends Exceptions Run-Time Type Information (RTTI) Casting Streams Preincrement and ...

    HIVE文件读写

    用于自己解析注册表,也就是可以Linux实现注册表解析。BCD解析

    list,set,map,数组之间的相互转换详细解析

    以下是对Java中list,set,map,数组之间的相互转换进行了详细的分析介绍,需要的朋友可以过来参考下

    lamda表达式part1

    lamda表达式 part1

    C++反射功能

    众所周知,C++不支持反射,这让热衷C++的伙伴们难免有些失意,在需要用到反射的时候,不得不使用java或者C#。然而,通过一定的技巧,C++依然可以实现类似反射的功能。该源码项目通过运用函数指针,tinyxml,哈希map...

    minecraft源代码亲测可运行

    minecraft源代码,900多java文件,亲测可在eclipse中运行!真实有效!

    C++大学教程,一本适合初学者的入门教材(part2)

    1.9 Java、Internet与万维网 1.10 其他高级语言 1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的...

Global site tag (gtag.js) - Google Analytics