删除JAVA集合中元素的实现代码

经常我们要删除集合中的某些元素。有些可能会这么写。

复制代码 代码如下:

public void operate(List list){
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
list.remove(str);
}
}
}

  这种写法一运行就会报如下异常:

  Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)

  因为list在循环中的时候是不可以删除它的元素的。后来我是这样做的,一种很笨的方法,思路是这样的:创建一个List专门存放要被删除的元素,循环过后,用List.removeAll方法把元素删除。代码如下:

复制代码 代码如下:

public void operate(List list){
List removeList= new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
removeList.add(str);
}
}
list.removeAll(removeList);
}

  这样也确实可以解决问题了,但是方法实在太笨重,其实可以有更简单的更高效的方法,就是用Iterator.remove方法,如下:

复制代码 代码如下:

for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}

  所以,你对Java的基础知识了解越多,代码就会写得越简洁。相反如果你的代码特别复杂,则方法或设计一定有问题。

 

时间: 2024-09-07 06:16:39

删除JAVA集合中元素的实现代码的相关文章

删除JAVA集合中元素的实现代码_java

经常我们要删除集合中的某些元素.有些可能会这么写. 复制代码 代码如下: public void operate(List list){ for (Iterator it = list.iterator(); it.hasNext();) { String str = (String)it.next(); if (str.equals("chengang")){ list.remove(str); } } } 这种写法一运行就会报如下异常: Exception in thread &q

如何删除JAVA集合中的元素

经常我们要删除集合中的某些元素.有些可能会这么写. public void operate(List list){ for (Iterator it = list.iterator(); it.hasNext();) { String str = (String)it.next(); if (str.equals("chengang")){ list.remove(str); } } } 这种写法一运行 就会报 如下异常: Exception in thread "main&

java中循环遍历删除List和Set集合中元素的方法(推荐)_java

今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录如下: 错误代码的写法,也就是报出上面异常的写法: Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks(); for(CheckWork checkWork : set){ if(checkWor

基于java集合中的一些易混淆的知识点(详解)_java

(一) collection和collections 这两者均位于java.util包下,不同的是: collection是一个集合接口,有ListSet等常见的子接口,是集合框架图的第一个节点,,提供了对集合对象进行基本操作的一系列方法. 常见的方法有: boolean add(E e) 往容器中添加元素:int size() 返回collection的元素数:boolean isEmpty() 判断此容器是否为空: boolean contains(Object o) 如果此collecti

java ee中的一段代码:

问题描述 java ee中的一段代码: for (Teacher teacher : teachers) { teacher.setEditable(false); 解决方案 foreach就是一种特殊for循环,foreach自动遍历每一个元素,无法根据索引指定某个特定元素.格式是for(元素类型 元素变量:遍历对象){--},例如: String[] hobbys = {"read","sing","dance"}; for(String h

java开发中通用分页类代码

java开发中通用分页类代码 在java中要分页我们必须要有数据库教程,所以我们先准备下数据库,其数据库脚步如下: --以下是创建数据库和数据库表以及向数据库插入数据   use master  Go  if exists(select * from sysdatabases where name='pagination')  drop database pagination  Go  create database pagination  Go  use pagination  Go  cre

用Java集合中的Collections.sort方法如何对list排序(两种方法)_java

第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

java-怎么获取一个JAVA类中各个方法的代码块

问题描述 怎么获取一个JAVA类中各个方法的代码块 特殊需求:获取一个JAVA类中各个方法的代码块来查找方法中是否包含某个关键字,现在通过发射只能拿到方法的属性和注释,有没有API或者其他方法,求告知,3Q 没金币了..对不起大家 PS:获取本地源代码的,不是运行时的class 解决方案 myeclipse中调试调用带有静态代码块的类时出现java.lang.NoClassDefFoundError的处理方法在DWR中实现直接获取一个JAVA类的返回值的两种方法java代码获取当前类类名.方法名

java集合中Comparable和Comparator辨析

一.Comparable和Comparator简介 在对集合元素进行比较时一般使用TreeSet.对于简单的数据类型,TreeSet可以直接进行比较.但是对于复杂的数据类型,比如自己定义的数据类型或者类,就需要自己设置比较方法与比较规则了,这时就需要使用Comparable和Comparator. Comparable和Comparator都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现排序,而Comparator是在集合外部实现的排序.所以如果想对结合排序,需要在