集合删除数据
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初始就是最后一位索引,当对比成立后,删除字符串,后面的元素会自动往前补,而后面的元素都是已经被确认过不是要删除的元素
.
.
.
.