遍历ArrayList并移除一个元素[通俗易懂]

遍历ArrayList并移除一个元素[通俗易懂]前言这是一个比较经典的面试题,相信也会有不少人遇到,今天就在此记录一下,写了两种方式供大家参考。方式一在for循环中删除元素,倒序遍历ArrayList能够有效防止漏删,这里大家可能会有疑问了?假设按照从0到size-1下标来删那么如果有相邻的两个元素是一样的,删除了第一个,此时数组长度会-1并且所有元素往前移动一位,那么第二个就移动到第一个元素的位置了,此时控值for循环的下标i已经+1了等于直接就跳过了第二个重复元素,倒叙就不会出现此类情况了。List<String>strs=

大家好,又见面了,我是你们的朋友全栈君。

前言

这是一个比较经典的面试题,相信也会有不少人遇到,今天就在此记录一下,写了两种方式供大家参考。

方式一

在for循环中删除元素,倒序遍历ArrayList能够有效防止漏删,这里大家可能会有疑问了?假设按照从0到size-1下标来删那么如果有相邻的两个元素是一样的,删除了第一个,此时数组长度会-1并且所有元素往前移动一位,那么第二个就移动到第一个元素的位置了,此时控值for循环的下标i已经+1了等于直接就跳过了第二个重复元素,倒叙就不会出现此类情况了。

List<String> strs = new ArrayList<>();
strs.add("1")
strs.add("2")
strs.add("3")
strs.add("4")
strs.add("5")
strs.add("6")

for (int i = strs.size() - 1; i >= 0; i --) { 
   
    if(strs.get(i).equals("1")){ 
   
	    strs.remove(i);
    }
}

方式二

使用迭代器遍历ArrayList并删除某一个元素

List<String> strs = new ArrayList<>();
strs.add("1")
strs.add("2")
strs.add("3")
strs.add("4")
strs.add("5")
strs.add("6")

Iterator<String> iter = strs.iterator();
while(iter.hasNext()) { 
   
    if (iter.next().toString().equals("1")) { 
   
        iter.remove();
    }
}
System.out.println(strs);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163108.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 主键自增语句_MySQL 自增主键[通俗易懂]

    mysql 主键自增语句_MySQL 自增主键[通俗易懂]以下仅考虑InnoDB存储引擎。自增主键有两个性质需要考虑:单调性每次插入一条数据,其ID都是比上一条插入的数据的ID大,就算上一条数据被删除。连续性插入成功时,其数据的ID和前一次插入成功时数据的ID相邻。自增主键的单调性为何会有单调性的问题?这主要跟自增主键最大值的获取方式,以及存放位置有关系。如果最大值是通过计算获取的,并且在某些情况下需要重新获取时,会因为最新的数据被删…

    2022年6月30日
    33
  • 设计模式学习总结——观察者模式「建议收藏」

    设计模式学习总结——观察者模式

    2022年1月25日
    72
  • Springboot+netty实现Web聊天室

    Springboot+netty实现Web聊天室Web聊天室的实现一、项目的创建一、项目的创建新建Spring项目:选择JDK版本:选择SpringWeb:项目名称和位置的设置:

    2022年6月22日
    26
  • vue入门基础教程之经验总结篇(小白入门必备)|建议收藏「建议收藏」

    vue入门基础教程之经验总结篇(小白入门必备)|建议收藏「建议收藏」VUEvue组件的三个API:prop、event、slotprop定义了这个组件有哪些可配置的属性,组件的核心功能也都是它来确定的。组件里定义的prop都是单向数据流,只能通过父级组件对齐进行修改,组件本身不能修改props的值,只能修改定义在data里的数据,非要修改,也是通过后面介绍的自定义事件通知父级,由父级来修改;在子组件定义prop是,使用了camelCase的命名法,由于html特性不区分大小写。camelCase的prop用于特性时,会转为短横线隔开(比如availab

    2022年6月4日
    32
  • Python基础(1):基本规则及赋值「建议收藏」

    Python基础(1):基本规则及赋值「建议收藏」Python有如下的基本规则:#后表示注释\n是行分隔符\是继续上一行,将过长语句分开;分号将两个语句连接在一行中:冒号将代码头和体分开代码块用缩进块的方式体现不同缩进深度分隔不同的代码

    2022年7月5日
    26
  • 大型活动大规模人群的识别和疏散:从公交2.0到公交3.0

    大型活动大规模人群的识别和疏散:从公交2.0到公交3.01关于数据本文中所使用到的数据包括,交通卡、交通事故、出租车轨迹、公交车运行、地铁运行、空气质量、气象监测、新浪微博等12个数据集近TB量级的数据。2关于我们我们希望通过应用交通数据以解决大型活动(如演唱会、足球比赛、跨年活动等)结束后大规模人群滞留导致的疏散困难、交通拥堵、事故隐患等一系列问题(如外滩踩踏事件)。在此基础上我们提出“公交3.0”的绿色出行概念,核心包括以下三点:…

    2022年7月16日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号