集合删除数据

1.集合删除数据

答:

但其实,我们这样写是不规范的,不规范的原因有两点:

1.if括号里的字符串等式书写不规范

如果写s.equals("test"),别人就会认为你是没有开发经验的程序员,错误的原因就在于没有考虑到空指针异常,如果s=null,这样写程序不会报错,但当运行时就会出现空指针异常。


正确格式应该是反过来写"test".equals(s)
别忘了"test"有双引号,也是字符串对象,可以使用equals方法,如果"test"在前面,有实际意义,就不可能出现空指针异常,就算s是null,判断后程序也不会报错,只会显示false

2.集合遍历中正确的两种删除操作

如图

在完成上述步骤后,我们进行删除操作,但是发现集合中仍然有test,没有删除干净,这是为什么?

我们不妨看图分析 将i视为指针

首先指向0号索引,集合get()获取到字符串“abc”,与其对比后,发现不是“test”,不进行删除操作,接着i++

接着指向1号索引,获取到字符串,对比之后发现是“test”,进行删除

.
.
.

.

重点来了,集合是不允许有空缺的,当1号索引的“test”被删除后,集合中出现空缺,后面的元素就会自动往前补

补完之后,又因为i++,指针会从1号指向2号索引,获取到“bbb”,发现不是“test”,不删除,程序结束

这就是没有删除干净的原因,那该如何解决呢?

第一种删除操作:在删除操作中加上i--

每完成一次删除操作,产生空缺,集合后面的元素就自动补位,这时i--,i就会从1号变为0号索引,然后又i++,指针又会重新指向1号索引,继续判断


.


.


.


.

第二种删除操作:从后往前删

如图

让i初始就是最后一位索引,当对比成立后,删除字符串,后面的元素会自动往前补,而后面的元素都是已经被确认过不是要删除的元素

.

.

.

.

posted @ 2024-12-14 13:53  直実  阅读(4)  评论(0编辑  收藏  举报