如题所述
ArrayListå°±æ¯å¨ææ°ç»ï¼ä¹æ¯ä¸ä¸ªå¯¹è±¡ã
å建ä¸ä¸ªArrayList对象ï¼è¯¥å¯¹è±¡åæ¾å¨å å åä¸ï¼ä¸æ¯ä¸ä¸ªå åè¿ç»çå ååºåã
1ãArrayListæ¯ç¨æ°ç»å®ç°çï¼è¿ä¸ªæ°ç»çå åæ¯è¿ç»çï¼ä¸åå¨ç¸é»å ç´ ä¹é´è¿éçå ¶ä»å åã
2ãç´¢å¼ArrayListæ¶ï¼é度æ¯åçæ°ç»æ ¢æ¯å ä¸ºä½ è¦ç¨getæ¹æ³ï¼è¿æ¯ä¸ä¸ªå½æ°è°ç¨ï¼èæ°ç»ç´æ¥ç¨[ ]访é®ï¼ç¸å½äºç´æ¥æä½å åå°åï¼é度å½ç¶æ¯å½æ°è°ç¨å¿«ã
3ãæ°å»ºArrayListçæ¶åï¼JVMä¸ºå ¶åé ä¸ä¸ªé»è®¤ææå®å¤§å°çè¿ç»å ååºåï¼å°è£ 为æ°ç»ï¼ã
4ãæ¯æ¬¡å¢å å ç´ ä¼æ£æ¥å®¹éï¼ä¸è¶³åå建æ°çè¿ç»å ååºåï¼å¤§å°çäºåå§å¤§å°+æ¥é¿ï¼ï¼ä¹ç¨æ°ç»å½¢å¼å°è£ ï¼å¹¶å°åæ¥çå ååºåæ°æ®å¤å¶å°æ°çå ååºåï¼ç¶ååç¨ArrayListä¸å¼ç¨åæ¥å°è£ çæ°ç»å¯¹è±¡çå¼ç¨åéå¼ç¨å°æ°çæ°ç»å¯¹è±¡ï¼
elementData = Arrays.copyOf(elementData, newCapacity);
å建ä¸ä¸ªArrayList对象ï¼è¯¥å¯¹è±¡åæ¾å¨å å åä¸ï¼ä¸æ¯ä¸ä¸ªå åè¿ç»çå ååºåã
1ãArrayListæ¯ç¨æ°ç»å®ç°çï¼è¿ä¸ªæ°ç»çå åæ¯è¿ç»çï¼ä¸åå¨ç¸é»å ç´ ä¹é´è¿éçå ¶ä»å åã
2ãç´¢å¼ArrayListæ¶ï¼é度æ¯åçæ°ç»æ ¢æ¯å ä¸ºä½ è¦ç¨getæ¹æ³ï¼è¿æ¯ä¸ä¸ªå½æ°è°ç¨ï¼èæ°ç»ç´æ¥ç¨[ ]访é®ï¼ç¸å½äºç´æ¥æä½å åå°åï¼é度å½ç¶æ¯å½æ°è°ç¨å¿«ã
3ãæ°å»ºArrayListçæ¶åï¼JVMä¸ºå ¶åé ä¸ä¸ªé»è®¤ææå®å¤§å°çè¿ç»å ååºåï¼å°è£ 为æ°ç»ï¼ã
4ãæ¯æ¬¡å¢å å ç´ ä¼æ£æ¥å®¹éï¼ä¸è¶³åå建æ°çè¿ç»å ååºåï¼å¤§å°çäºåå§å¤§å°+æ¥é¿ï¼ï¼ä¹ç¨æ°ç»å½¢å¼å°è£ ï¼å¹¶å°åæ¥çå ååºåæ°æ®å¤å¶å°æ°çå ååºåï¼ç¶ååç¨ArrayListä¸å¼ç¨åæ¥å°è£ çæ°ç»å¯¹è±¡çå¼ç¨åéå¼ç¨å°æ°çæ°ç»å¯¹è±¡ï¼
elementData = Arrays.copyOf(elementData, newCapacity);
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-09-29
你想在代码里判断是做不到的。
只能自己计算。先算出list里面每个object的大小(char=1,int=4等等),然后*arraylist.size()。本回答被提问者和网友采纳
只能自己计算。先算出list里面每个object的大小(char=1,int=4等等),然后*arraylist.size()。本回答被提问者和网友采纳
第2个回答 2014-02-14
应该就是arraylist.length*size();
size()就是返回arraylist中存储对象的占用内存大小
参考
size()就是返回arraylist中存储对象的占用内存大小
参考
第3个回答 2018-08-08
楼主非要看的话,只有一招了。利用反射获取数组的大小。
import java.lang.reflect.*;
import java.util.*;
public class Test{
public static void main(String[] args) throws Exception {
ArrayList list = new ArrayList();
Field f = ArrayList.class.getDeclaredField("elementData");
f.setAccessible(true);
Object[] elementData = (Object[])f.get(list);
System.out.println(elementData.length);
}
}
import java.lang.reflect.*;
import java.util.*;
public class Test{
public static void main(String[] args) throws Exception {
ArrayList list = new ArrayList();
Field f = ArrayList.class.getDeclaredField("elementData");
f.setAccessible(true);
Object[] elementData = (Object[])f.get(list);
System.out.println(elementData.length);
}
}
第4个回答 2019-05-10
成员函数也是函数,函数都是有地址的,所以函数是占用内存空间的,但函数由于是多对象共享的,所以函数不占用对象的内存地址,是放在代码段的