Mak*_*sim 1 java arraylist data-structures
让我首先提出我的问题,我正在学习编程/数据结构.是的,我知道Java有一个集合API可以完成我正在编写的代码,但是目前我宁愿首先学习基本思想.
我正在编写一个ArrayList实现,并且在引用变得过时时对垃圾收集感到好奇.所以在我的情况下,我有一个通用的对象数组ie,E[] data = (E[]) new Object[size];
并有一个方法E set(int index, E item)
,将取代data[index]
with项目.这是我的方法体:
public E set(int index, E item) {
if(index<0||index>size-1) throw new IndexOutOfBoundsException(); //Not relevant to question
E previousValue = data[index];
data[index]=null;
data[index]=item;
return previousValue;
}
Run Code Online (Sandbox Code Playgroud)
关于我的问题.是否有必要使对象为null,即使它将重新分配索引.看起来我应该这样,但代码看起来多余.或者,如果我是正确的,是否有一个不那么冗余的方式来编码呢?我真的很感激不止一句话的答案,我对这个话题非常好奇.
Jon*_*eet 10
不,没有必要这样做.它对垃圾收集没有任何影响.null
在以下某种情况下,将变量设置为(就垃圾收集而言)非常重要:
我个人的经验是,这些情况相对较少 - 例如,实例变量通常在包含对象的整个生命周期中都很有用.包含一些不需要的变量的长时间运行方法通常应该分成多个方法,但情况并非总是如此.
需要注意的是你没有设定一个很重要的目的,以null
有没有这样的概念- .您只能将变量的值设置为null
.区分这些概念非常重要:
变量的值永远不是对象 - 只是引用或原始值.可以把变量想象成一张纸 - 一张纸不能包含实际的房子(对象),但是你可以在纸上写下房子的地址(用于导航到对象的参考) ).