这里占用点地方记录LIst接口的几个常用方法:
List接口:
void add(int index, E element)
boolean remove(Object o);
boolean contains(Object o)
E get(int index)
E set(int index, E element)
直接上代码

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.*;@RunWith(SpringJUnit4ClassRunner.class)  //更改junit的运行期,不要直接去找junit,而是先找spring-test,test模块才能拿到容器
@ContextConfiguration("classpath:applicationContext.xml")  //告知spring的配置文件
public class CollectionTest {@Testpublic void testListRemove0(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方式0: 使用增强fortry {for (String s : strings){if ("詹姆士".equals(s)){strings.remove(s);}}} catch (Exception e) {e.printStackTrace();} finally {System.out.println(strings); //事实上会报ConcurrentModificationException异常// [科比, 韦德, 詹姆士, 詹姆士, 博士, 詹姆士]}}@Testpublic void testListRemove1(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方法1:try {Iterator<String> iterator = strings.iterator();while(iterator.hasNext()){String next = iterator.next();if ("詹姆士".equals(next)){ //才不会运行师报空指针异常strings.remove(next);}}} catch (Exception e) {e.printStackTrace();} finally {System.out.println(strings);  //事实上会出现ConcurrentModificationException:并发修改异常,// [科比, 韦德, 詹姆士, 詹姆士, 博士, 詹姆士] , 说明在remove第二个"詹姆士"的时候就会报这个concurrentmodificationException}}@Testpublic void testListRemove2(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方法2:使用迭代器删除Iterator<String> iterator = strings.iterator();while(iterator.hasNext()){String next = iterator.next();if ("詹姆士".equals(next)){iterator.remove();}}System.out.println(strings); //[科比, 韦德, 博士], 说明删除成功}@Testpublic void testListRemove3(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方法2:判断之后再删除while(strings.contains("詹姆士")){strings.remove("詹姆士");}System.out.println(strings);//[科比, 韦德, 博士], 说明删除成功}@Testpublic void testListRemove4(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方法4: 倒循环删除for (int i = strings.size()-1; i >= 0; i--){String s = strings.get(i);if ("詹姆士".equals(s)){strings.remove(s);}}System.out.println(strings);//[科比, 韦德, 博士], 说明删除成功}@Testpublic void testListRemove5(){List<String> strings = new ArrayList<>();strings.add("科比");strings.add("韦德");strings.add("詹姆士");strings.add("詹姆士");strings.add("詹姆士");strings.add("博士");strings.add("詹姆士");System.out.println(strings);//删除方法5: 循环时如果命中目标下标不动for (int i = 0; i < strings.size(); i++){String s = strings.get(i);if ("詹姆士".equals(s)){strings.remove(s);i--;}}System.out.println(strings);//[科比, 韦德, 博士], 说明删除成功}
}

List中删除元素的6种方法比较--前两种就是坑,因为size指针前移。相关推荐

  1. 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler...

        写自定义控件已经好久了,也有几个用得时间比较长的,但是对于"事件"一直是比较模糊,没有很详细的理解.          最近升级分页控件,由于原来使用的是VB.net(在V ...

  2. 在MFC对话框中显示图片的三种方法(有两种使用OpenCv)

    最近写了一个用对话框显示图片的程序,这里将学习到的东西整理一下: 编程环境:VC6.0+OpenCv1.0 准备工作:用VC6.0生成一个对话框外壳(全被采用默认设置),然后在对话框中添加一个静态控件 ...

  3. List遍历中删除元素

    List遍历主要有索引下标遍历.for循环遍历和Iterator迭代遍历,索引下标和for循环在遍历中删除元素都存在问题,Iterator迭代可以实现遍历中删除元素. 索引下标遍历 List<I ...

  4. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  5. ruby array_在Ruby中使用Array.pop和Array.shift方法从Array中删除元素

    ruby array Ruby Array.pop和Array.shift方法 (Ruby Array.pop and Array.shift methods) If you are reading ...

  6. jquery中删除元素的remove()方法

    今天看jquery中删除元素的方法,包括remove()方法和empty() 方法 remove()方法为删除被选元素及子元素 empty() 方法为删除元素中的子元素 其中remove()方法还有一 ...

  7. 如何在C ++中从容器中删除元素

    How to remove elements from container is a common C++ interview question, so you can earn some brown ...

  8. 从PHP中的数组中删除元素

    有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach ($array)不再包含该元素? 我认为将其设置为null可以做到,但是显然不起作用. #1楼 如果您有一个数字索引的数组,其中 ...

  9. 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素

    [重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...

最新文章

  1. Linux sed删除文件注释行并删除空行
  2. 编译bluez-5.25 通过 Linux环境下运行
  3. html中显示数据库中的一条数据,如何使用html表显示数据库中的数据
  4. Sharepoin学习笔记 —架构系列--02 Sharepoint的处理(Process)与执行模型(Trust Model) 1
  5. B端产品如何寻找竞品?
  6. Docker 使用 docker push 命令 推送本地镜像到远程DockerHub仓库服务器
  7. eclipse中server name选项变灰
  8. JS原型继承工作原理
  9. 关于Mysql修改密码的方法汇总
  10. Java高效开发12个精品库
  11. (转载)web.xml中 IntrospectorCleanupListener的作用
  12. CLR寄宿(中) 托管exe文件的加载和执行
  13. HDU---3642:Get The Treasury【立方体体积并】
  14. 贪吃蛇的c语言运行程序,用C语言编写贪吃蛇游戏的程序
  15. 训练集,验证集与测试集
  16. 7-24 猜数字游戏 (15分)
  17. Building the main Guest Additions module
  18. Laravel Collect集合用pluck取多维数组中某个字段值
  19. Excel2010重复打印标题行
  20. CI框架中表单取值 $this-input-post('city');

热门文章

  1. CDH6.2.0安装phoenix5.0.0
  2. 简单说一下 Steam平台 常用游戏的EAC反调试保护 WIN7X64
  3. java script check radio
  4. 【语言-C++】Image - .exe 中的 0x0043a998 处有未经处理的异常: 0xC0000005: 读取位置 0x029d846c 时发生访问冲突
  5. Vue 爬坑之旅 -- history 路由模式下微信分享爬坑总结
  6. ubuntu一个命令强制删除无法删除的文件
  7. 如何吸引客户到您的店铺
  8. JavaScript深拷贝的方法
  9. 小米手机怎么看型号?小米手机怎么看参数?
  10. wps保存后怎么恢复