List对象remove方法的使用

原创 2013年12月04日 10:11:43

 

package hb.list;

import hb.util.Person;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class RemoveListObject {

	public static void main(String[] args) {
		LinkedList list = new LinkedList();
		for(int i = 0 ; i < 6; i++){
			Person p = new Person();
			p.setName("name" + i);
			p.setPassword("password"+i);
			list.add(p);
		}
		//LinkedList有克隆的方法,但是接口List是没有的
		List list2 = (List)list.clone();
		
		printList(list);
		
		//遍历的长度一定要是list.size(),因为后面移除对象之后就会导致list长度变化,如果使用常量,会导致边界异常
		//例如:长度是100,删除掉了50个,而获取list对象的51个,则会爆边界异常,因此是使用list.size()
		for(int i=0;i<list.size();i++){
			Person obj = (Person)list.get(i);
			if(obj.getName().equals("name3")){
				list.remove(i);
				//for循环是先根据中间的值判断是否为true,然后再执行后面的i++
				i--;
			}
		}
		
		printList(list);
		
		//一般我们使用
		Iterator it = list2.iterator();
		while(it.hasNext()){
			Person tempobj = (Person)it.next();
			if(tempobj.getName().equals("name2")){
				//移除当前的对象
				it.remove();
			}
		}
		printList(list2);
		
	}
	
	public static String printList(List list){
		String result = "";
		for(int i=0; i< list.size();i++){
			result = result + ((Person)list.get(i)).getName()+"----";
		}
		System.out.println(result);
		return result;
	}
}

 

原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。

相关文章推荐

List对象remove方法的使用

一、源程序String str1 = new String("1"); List.remove() Iterator it = list.iterator(); while(it.hasNext(...

关于List,ArrayList中remove(object obj)方法不能删除对象问题

先看下面代码,大家猜猜打印的结果是什么?为什么? packageshiyan; importjava.util.ArrayList; importjava.util.List; public...

list add set remove方法

list中add set 和 remove介绍

关于用集合的remove方法删除list集合中满足条件的元素问题

循环集合的方法有三种: 简单for循环 iterator循环 增强for循环 例子如下: List fList = new ArrayList(); fList...

Java 集合之List 集合的删除方法顺序分析以及remove和removeAll区别

接下来看 remove()方法 public class TestList { public static void main(String args[]) { // 结果: Hello ...

关于 list.remove(obj);方法在迭代器中报java.util.ConcurrentModificationException

参考文献 java报这个异常ConcurrentModificationException。代码如下:List list = ...; for(Iterator iter = list.iter...
  • JQ_AK47
  • JQ_AK47
  • 2016年09月06日 23:22
  • 356

Java中List集合里Contains和Remove方法的本质

一、课题的来源、研究的目的意义(包括在我国应用的前景)、国内外研究现状及水平。 无线传感器网络(Wireless Sensor Network,WSN)是一种大规模、自组织、无线多跳、以数据为中心的无...

Java编程:List.remove()、equals() 方法解惑

下午写了一段代码,大致的处理的业务是这样的: 有一个 TreeNode 类型的 List,TreeNode 有一个 nodeId 属性, 如果 nodeId 字符串的第 index 索引位置的字符不...
  • claram
  • claram
  • 2016年11月28日 19:25
  • 686

Java list.remove( )方法需要注意的两个地方

list.remove最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分享一下。代码直接上一段代码,进行分析。public clas...

for循环删除(ArrayList.remove)及改进方法及对象在内存中的理解

小菜们肯定写过这样的代码: [java] view plain copy for(List list:lists){      //判断,如果成立删除 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:List对象remove方法的使用
举报原因:
原因补充:

(最多只允许输入30个字)