zoukankan      html  css  js  c++  java
  • 神奇!一行代码实现删除某集合下标2030的元素

    大家好,我是雄雄。

    今天我们还是分享关于集合的内容。

    假如有这样的需求,已知集合的长度为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

    支持作者

    赞赏就不用啦,生活都不易,右下角的“在看/赞”点一下,如果感觉文章不错,记得分享到朋友圈让更多人知道!

    点分享

    点点赞

    点在看

  • 相关阅读:
    数据类型的总结
    typeof加括号和不加括号的区别
    排序
    数据类型分为哪两类
    css中需要更小的字体如何实现
    一些细节注意点
    数值转换题
    如何用分支结构计算年份
    Scout YYF I
    D. AND, OR and square sum
  • 原文地址:https://www.cnblogs.com/a1111/p/14877388.html
Copyright © 2011-2022 走看看