大家好,我是雄雄。
今天我们还是分享关于集合的内容。
假如有这样的需求,已知集合的长度为100,也就是集合中有100个元素,现需要删除索引20-30之间的元素,我们应该怎么实现呢?我们先初始化集合,代码如下:
public static void testRemoveList(){List<String> lists = new ArrayList<String>(100);for (int i = 0;i<100;i++) {lists.add("张三"+i);}//遍历集合for (String str : lists) {System.out.println(str);}}
这个很简单,肯定难不倒聪明的你,你或许会用这一种方法,通过for循环遍历集合,一律调用remove方法移除,关键代码如下所示:
//遍历集合,删除索引为20-30的元素int count = 0;for(int i = 0;i<lists.size();i++){//每次都删除下标为20的元素//当第一次删除掉下标为20的元素时,原来下标为21的元素此下标此时就成了20,删10次就可以了lists.remove(20);if(count==10){break;}count++;}
运行结果:
为什么需要这样写?如果我写成如下代码可以实现吗?
for(int i =0;i<lists.size();i++){if(i>=20&&i<=30){lists.remove(i);}
}
这样是不可以的,原因很简单,当我们把下标为20的元素删除之后,原来下标21的元素此时下标就会成20,所以这样实现不了删除20-30之间的元素。
言归正传,这种方法我们都知道,可是还有没有更简单的方法呢,答案是有的,回忆我们前几期一直在说的subList方法,因为subList方法可以直接返回原列表的子列表(视图),我们直接清空掉该子列表(视图)中的所有元素那不就实现了吗?故此我们可以使用一行代码即可解决问题,如下所示:
lists.subList(20, 30).clear();
怎么样,是不是很简单,一定要学会学以致用!
往期精彩
‘小会计’的转行之旅
2020-10-13
子列表只是原列表的一个视图
2020-10-12
“半路出家”的程序猿怎么不被“熊”
2020-10-11
某同学工作之后的感悟
2020-10-10
班级日常分享,一天一瞬间
2020-10-10
为了金秋那沉甸甸的麦穗,我绝不辜负春天
2020-10-09
subList?? subString???
2020-10-08
支持作者
赞赏就不用啦,生活都不易,右下角的“在看/赞”点一下,如果感觉文章不错,记得分享到朋友圈让更多人知道!
点分享
点点赞
点在看