remove函数中的data[size]=null

来源:2-6 使用泛型

weibo_新的旅涂_0

2018-07-30

在Array中的remove函数中,

for(int i = index + 1 ; i < size ; i ++)    

data[i - 1] = data[i];    

data[size] = null; // loitering objects != memory leak,当循环执行到最后一次的时候,是data[size-1-1]=data[size-1],和data[size]没有关系。data[size]不是一直也没有元素嘛,有了不就越界了嘛,所以不太理解这个代码逻辑,麻烦老师讲解一下,谢谢了~

写回答

1回答

liuyubobobo

2018-07-30

在课程官方代码:https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/02-Arrays/07-Dynamic-Array/src/Array.java


第100行,首先进行了size --。所以,在101行,size已经是原来的size - 1了。此时data[size]指向原数组的最后一个元素:)

0
1
weibo_新的旅涂_0
非常感谢!
2018-07-30
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程