List怎么遍历删除元素
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
//方法1
for (int i = 0; i <list.size(); i++) {
if(list.get(i).equals("2")||list.get(i).equals("4")||list.get(i).equals("5"))
list.remove(i);
}
//方法2
// for (int i = list.size()-1; i >= 0; i--) {
// if(list.get(i).equals("2")||list.get(i).equals("4")||list.get(i).equals("5"))
// list.remove(i);
// }
//方法3
// for(String str:list){
// if(str.equals("1")){
// list.remove(str);
// }
// }
//方法4
// Iterator<String> iterator = list.iterator();
// while (iterator.hasNext()) {
// String s = iterator.next();
// if(s.equals("2")||s.equals("4")||s.equals("5"))
// iterator.remove();
// }
System.out.println(list.toString());
}
先试方法一i递增遍历:结果如下:[1, 3, 5, 6],删除数据不正确,是因为list每删除一个元素,后面的元素会补上也就是如果删除了下标为2的数据,下标3立马缓冲下标2,所以导致删除会混乱。
动脑子一想,那么i递减后面的元素补上就和循环没有关系了,实践证明方法二是可以的;
方法三:增强型循环,直接报错java.util.ConcurrentModificationException
方法四:迭代器遍历list删除元素是可以的,不过要注意用的是iterator的remove方法,如果用list.remove还是会报错java.util.ConcurrentModificationException
List怎么遍历删除元素的更多相关文章
- STL中用erase()方法遍历删除元素 .xml
pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...
- STL中用erase()方法遍历删除元素
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...
- java中List遍历删除元素-----不能直接 list.remove()
https://blog.csdn.net/github_2011/article/details/54927531 这是List接口中的方法,List集合调用此方法可以得到一个迭代器对象(Itera ...
- C++ vector 删除一个指定元素 和 find 一个指定元素以及遍历删除、 map遍历删除元素和删除find到的元素
vector: 1.delete element 转载:http://www.cnblogs.com/xudong-bupt/p/3522457.html #include <vector> ...
- python中list用法及遍历删除元素
列表(list)是python的基本数据结构,list中每一个元素都分配一个位置索引,可以通过索引访问元素值,list不要求数据项有相同的数据类型. list初始化 list由一个方括号加内部由逗号分 ...
- HashMap和List遍历方法总结及如何遍历删除元素
https://blog.csdn.net/demohui/article/details/77748809
- 解决List遍历删除元素提示ConcurrentModificationException
JDK1.8提供新的API ===> removeIf public static void main(String[] args) { List<String> list = ...
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
如何在遍历中使用 iterator/reverse_iterator 删除元素 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公 ...
- iOS遍历数组的同时删除元素
我们在遍历可变数组时,最好不要做删除数组中元素的操作. 因为删除操作可能会引起数组容量的变化,导致数组越界等问题. 以前在使用for循环遍历的时候遇到过这个问题. 当时的做法是使用enumerateO ...
随机推荐
- Android颜色资源文件
<?xml version="1.0" encoding="utf-8"?><resources> <color name=&qu ...
- fiddler实现手机端抓包(代理)
一.fiddler设置代理 1.打开Fiddler->Tools->Fiddler Options在Connection面板里将 Allow remote computers to con ...
- nginx优化 突破十万并发
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...
- AngularJs转换json日期/Date(00000)/
//过滤器ngApp.filter('jsonDate', function ($filter) { return function (input, format) { var timestamp = ...
- magento -- 解决magento错误:ERROR: Base table or view already exists: 1050 Table ... already exists
相信有更新magento或者,备份转移magento站点的时候可能会碰到类似这样的错误提示: Base table or view already exists: 1050 Table ... alr ...
- 跟着8张思维导图学习javascript
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javascript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又 ...
- 用mysql++读写二进制
方法1: // mysqlTest.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <mysql++.h> #inc ...
- 如何利用php array_multisort函数 对数据库排序
数据库中有4个字段分别是id,volume,edition,name. 要求对查询结果按照volume+edition从大到小排序.下面将一下array_multisort函数array_multis ...
- Yii2框架查询指定字段和获取添加数据的id
指定字段: $historyinfo = Healthy::find()->select(['healthy_id','pet_name','hardware_name','hardware_c ...
- StringBuilder和Append的一个程序及一个基础概念
废话少说直接来说:比如在串口数据操作中,我们只想显示串口接收的字符串,好吧你用string[]吧,有多少个字符串(顺便说下二进制在C#中是以字符串形式出现的)就要分配多少个储存空间,自己试下,要你你干 ...