如果我有一个 Java 对象的 ArrayList,底层实现真的只是一个对象引用数组吗?我正在创建这个方法:
//method returns all combinations of Objects
public ArrayList<ArrayList<Object>> getAllCombinations(ArrayList<Object> allObjects){
}
当我开始思考这个问题时,我想知道是否可以返回 ArrayList<ArrayList<Integer>>
其中整数是 allObjects 中的位置(本质上认为这会使用更少的内存)。但后来我开始认为数组实现的每个值只是指向 中对象的内存位置,并且数组没有为我正在创建的每个 ArrayList 创建新对象(这肯定会使用更多内存)。所以实际上,如果我只实现上面提到的方法,它会使用大约相同的内存,对吗?
我想我需要更好地理解Java的内存分配......
最佳答案
是的,数组或数组列表仅包含对对象的引用,而不包含对象本身。因此,无论底层对象的大小如何,数组中的每个项目都使用 4 字节内存(在 32 位计算机上)。
所以保持简单并返回任何有意义的内容。
关于java - arrayList 大小的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847474/