当前位置: 首页 > news >正文

吉林网站推广公司老油条视频h5

吉林网站推广公司,老油条视频h5,一个微信可以做两个网站支付,淘宝客高佣金网站建设文章目录1、为什么删不干净倒序删迭代器lambda表达式删除为什么说数组边for循环遍历边删除会出现删不干净的情况1、为什么删不干净 先写一个例子:可以先猜一下控制台会打印出什么内容? public class removeIterator {public static void main(String[]…

文章目录

  • 1、为什么删不干净
  • 倒序删
  • 迭代器
  • lambda表达式删除

为什么说数组边for循环遍历边删除会出现删不干净的情况

1、为什么删不干净

先写一个例子:可以先猜一下控制台会打印出什么内容?

public class removeIterator {public static void main(String[] args) {//ArrayList的底层数据结构就是数组List<String>list=new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");for(int i=0;i<list.size();i++){list.remove(i);}System.out.println(list.toString());}
}

公布答案:
在这里插入图片描述
可以看到,并没有全部移除掉(猜对没?)。那这是为什么呢?

一开始,list中是这样的:
在这里插入图片描述

当移除下标为0的元素后,index+1=1,而元素bbb及之后的元素都向前移动了一位,如下图:
在这里插入图片描述
接下来要移除index==1位置上的元素,也就是移除ccc,移除ccc后,ddd的下标变为1,而index+1=2,即不会移除ddd,所以最后list剩下了bbb和ddd:
在这里插入图片描述

那么如何才可以稳定的删除呢,总结了以下三种方法:

倒序删

倒序删不会出现上面例子中元素数组位置改变的情况。

public class removeIterator {public static void main(String[] args) {List<String>list=new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");for(int i=list.size()-1;i>=0;i--){list.remove(i);}System.out.println(list.toString());}
}

结果:
在这里插入图片描述

迭代器

使用 Iterator.remove() 方法
简单介绍一下这个方法:

  1. Collection接口实现了Iterable接口,实现了Iterable接口的类可以拥有增强for循环
  2. Iterator的remove()方法优势
    如果知道删除项的准确位置,删除操作的开销小
    不能对正在被遍历的集合进行改变(add,remove,clear等操作),但是可以调用iterator中的remove方法进行删除
public class removeIterator {public static void main(String[] args) {List<String>list=new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");Iterator<String> it = list.iterator();while(it.hasNext()){it.next();it.remove();}System.out.println(list.toString());}
}-----结果-----
[]

注:如果还未调用next()或在上一次调用 next 方法之后已经调用了 remove 方法,再调用remove都会报IllegalStateException。

lambda表达式删除

上面使用迭代器的方式虽然能够正常的删除列表中的元素,但是不够优雅,因为要写好几行的遍历代码,显得略臃肿。能不能只用一行代码完成这个功能呢?答案是可以的——使用Lambda表达式:
删除指定条件的元素:

  public String getString(List<Integer> list) {if (list == null || list.isEmpty()) {return null;}list.removeIf(e -> isNotValid(e));return list.stream().map(String::valueOf).collect(Collectors.joining(","));}private static Boolean isNotValid(Integer in) {if (in == null) {//为空的为无效数字return true;}return false;}
//输入:[1,2,3,null,5,null,7]
//输出:"1,2,3,5,7"
http://www.yayakq.cn/news/790585/

相关文章:

  • 网络营销常用的方法有哪些seo线上培训多少钱
  • 如何把jQuery特效做网站背景招商项目
  • 专做it招聘的网站利用养生网站做竞价引流
  • 知名网站建设托管手机下载工具app
  • 深圳十大网站建设梅州兴宁网站建设培训
  • 视频网站的建设目标推广链接怎么制作
  • 有服务器如何做网站网站开发专员
  • 合肥网站改版郑州网站竞价托管
  • 网上书城网站开发方案网站网页价格
  • 深圳市网站建设单位十佳传媒公司主要做什么业务
  • 电脑网站设计公司给被k的网站做友链
  • 域名解析到网站百年人寿保险公司官网
  • php网站开发专业1.电子商务网站建设的核心是( )
  • 重庆快速建站运动猿app 网站开发
  • 免费发布信息网站大全网站一般用什么软件做
  • 个人soho要怎么做企业网站百度指数app下载
  • 印江建设局网站工伤做实的那个网站
  • 龙华网站建设全包网站备案无前置审批文件
  • 佛山网站推广 优帮云龙华o2o网站建设
  • flash 做网站房地产销售工作内容
  • 书画展示网站模板淮安网站建设价位
  • 网页设计留言板怎么做淄博seo网络推广
  • 邯郸市住房和城建设局网站建设好的网站怎么分享
  • 江苏国龙翔建设网站从头建设个人网站步骤
  • 深圳福田专业网站改版网站正在建设中html5
  • 常用设计网站有哪些软件企业为什么要做推广
  • 怎么查看网站空间是否到期无锡网站制作优化
  • 电子商务网站建设与管理实训报告有必要自建网站做导购吗
  • 大连中山网站建设江山市建设局网站
  • 陕西省关于网站信息内容建设做星座网站