Class Diagnostic {
//Get the size in bytes of an object
static long sizeOf(Object object);
//Get the references for an object (leafs)
static List<Object> getRefs(Object object);
//Implement this with those above
public Long objectSize(Object object);
}
你将如何实现objectSize来返回对象的字节大小?
方法objectSize返回所有子节点组合(树上的每个节点)的字节大小。
示例:
Object A (19 bytes)
/ \
/ \
B(20) C(37)
/
/
C(15)
ç”案:19+20+37+15 = 91
我在é�¢è¯•ä¸é�‡åˆ°äº†è¿™ä¸ªé—®é¢˜ï¼Œå¾ˆæƒ³çœ‹çœ‹åˆ«äººçš„ç”案。由äº�æˆ‘å¯¹æ ‘é��å�†ç®—法ä¸�太了解。
我想出了这个...(我知é�“它å�¯èƒ½ä¸�好或者ä¸�æ£ç¡®ğŸ˜‰ï¼Œå�ªæ˜¯æƒ³å¦ä¹ 一下)
public Long objectSize(Object object) {
List<Object> objectList = new ArrayList<Object>();
Long sum = sizeOf(object);
objectList = getRefs(object);
for(Object object : objectList){
sum += objectSize(object);
}
return sum;
}
我注意到我可能会遇到一个循环并且遭遇stackoverflow错误,因为我没有检查是否已经通过了某个“节点”。然后我想我应该有另一种数据结构(比如处理键/值对的哈希表)来处理临时列表以进行比较。
objectSize(Object object);
这个方法是否应该返回自身和所有子节点的大小总和? - BLuFeNiXsum += objectSize(object);
。 - G. Bach19 + 20 + 37 + 15 = 91
,我是对的吗? - Rerito