我是 Java 世界的新手,有 C++ 背景。我想将一些 C++ 代码移植到 Java。 代码使用稀疏 vector :
struct Feature{
int index;
double value;
};
typedef std::vector<Feature> featvec_t;
据我了解,如果创建一个对象,内存使用会产生一些开销。 因此,当一组 featvec_t 中有 10 到 1 亿个特征时,特征的简单实现将产生巨大的开销。
如何在 Java 中有效地表示这种结构内存?
最佳答案
如果内存确实是您的瓶颈,请尝试将您的数据存储在两个单独的数组中:
int[] 索引
和double[] 值
。
但在大多数情况下,对于如此大的结构,性能(时间)将是主要问题。根据主要对数据执行的操作(插入、删除、获取等),您需要选择合适的数据结构来存储类 Feature 的对象。 使用 java.util.Collection 开始您的探索接口(interface)、其子接口(interface)(List、Set 等)及其实现在 java.util 包中提供。
关于Java 和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2048155/