神奇!一行代码实现删除某集合下标20-30的元素
大家好,我是雄雄。
今天我们还是分享关于集合的内容。
假如有这样的需求,已知集合的长度为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();
怎么样,是不是很简单,一定要学会学以致用!
往期精彩
支持作者
赞赏就不用啦,生活都不易,右下角的“在看/赞”点一下,如果感觉文章不错,记得分享到朋友圈让更多人知道!
点分享
点点赞
点在看