Java教程

C++标准库与Java基础类对照

本文主要是介绍C++标准库与Java基础类对照,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、集合类
对象的集合,指如链表,数组,队列这一类的数据结构。在C++标准库中把这些成为Container, 在Java中称为Collection。

C++STL常用Container: vector, list, map, set, queue, stack, priority_queue
Java基础类:ArrayList, HashMap, HashSet

注意:
在C++中采用了模板适应各种类型。Java中没有模板,由于各个对象都是派生自Object类, 元素会自动向上转换。Java的这种机制可能会引起一些非法的类型转换,从而导致程序错误。当从Java的Collection取对象时,返回的是Object对象,因此需要程序员进行显式的向下转换。另外,Java的Collection不支持基本类型,解决办法是利用基本包装类(如Integer, Float, Double等)。
在JDK 5.0中加入了泛型类型,形式上有点像C++的模板,例如定义ArrayList<String> v, 这种的语法清晰地显示了v是存放String的容器。Java的泛型编程超出本文范围,请参阅相关资料。 考虑到兼容性的问题,本文对Collection的定义没有采用泛型的形式。
在这里插入图片描述
在这里插入图片描述
list与LinkedList
双向链表。
map与HashMap
C++ STL中的map一般是用红黑树(RB-Tree)实现,Java的HashMap多用散列(hash)的方法实现。
Java的HashMap一般都要重载equals()和hashCode()方法 。
在这里插入图片描述

二、算法

下面讲述的C++的泛型算法只适用于随机访问的容器,如数组,vector等。对List和Map不使用。List有自己一套算法方法。

在这里插入图片描述
三、字符串

C++采用string类,Java采用String类。java的String类一经初始化就不能改变,每次增加或删除字符时会构建一个新的String类,在频繁改变操作中会大量内存耗费。可变的String应采用StringBuffer类。
在这里插入图片描述

这篇关于C++标准库与Java基础类对照的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!