我的hashMap以“Document”为键,“DocumentSections”为值。Map <Document, DocumentSection>
。 Document有很多其他成员变量(原始和非原始).Document还有一个唯一的String值。我的问题是,如果最好通过Document中的唯一字符串值将Document替换为键,例如HashMap<document.getValue(), DocumentSection>
。其中value是唯一的String。如果我使用字符串作为键而不是将Document对象作为键,我的程序会消耗更少的内存吗?
由于
答案 0 :(得分:1)
我的程序会消耗更少的内存
不,地图仅存储对您的文档的引用。对Document或String的引用使用相同数量的内存。
但请注意,使用可变对象作为键通常是一个坏主意。因此,如果您的文档可以更改,则从hashcode / equals角度来看,您应该使用该String。
答案 1 :(得分:1)
首先,文档作为键是错误的选择,因为它是一个可变对象。
第二点是你不会通过用字符串替换键来节省内存,因为即使你不将它用作键,文档对象也会留在内存中。
答案 2 :(得分:0)
实际上,如果你使用字符串而不是文档作为键,哈希函数可能会花费更少的时间。