日期:2014-05-20  浏览次数:20756 次

求一最高效的方式,遍历,修改,删除一个ArrayList中的若干元素?
求一最高效的方式,遍历,修改,删除一个ArrayList中的若干元素?

例如:
for (int i = 0; p_arrayList.size() < i; i++)
{
 if (...)
 {
  p_arrayList.remove(i);
 }

 if (...)
 {
  new ObjectXX = .....;
  p_arrayList.set(i , ObjectXX);
 }
}

------解决方案--------------------
如果要修改、删除什么的,可以使用LinkedList,效率要比ArrayList高。
------解决方案--------------------
用迭代器可以很方便的遍历所有元素。
------解决方案--------------------
学习!up
------解决方案--------------------
不能这样删除的
会outofbounds
------解决方案--------------------
Java code

import java.util.ArrayList;

/**
 * 
 * @author wdman
 * @version 1.0 2007-12-26
 */
public class TestList {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        ArrayList<String> list = new ArrayList<String>();
        
        list.add("data");
        list.add("data2");
        list.add("data");
        list.add("data4");
        list.add("data");
        list.add("data2");
        list.add("data");
        list.add("data8");
        list.add("data");
        list.add("data10");
        list.add("data");
            
        int j = list.indexOf("data2"); 
        while (j > -1) {
            list.set(j, "new data");
            j = list.indexOf("data2"); 
        }
        
        while (list.contains("data")) {
            list.remove("data");
        }
        
        for (int i=0; i<list.size(); i++) {
            System.out.println(list.get(i));
        }
        
    }
}

------解决方案--------------------
Java code

while (list.contains("data")) {
            list.remove("data");
        }

------解决方案--------------------
up!!!
------解决方案--------------------

up...
------解决方案--------------------
请注意代码简洁和代码高效的区别.
------解决方案--------------------
第一 如果不需要明确定位可以采取6楼给出的用迭代器的方法 
第二 如果需要定位并且有删除最好从后向前遍历 因为如果从前向后遍历当你删除的时候会影响到后面的记录size的大小也会变 很有可能超出下标范围
------解决方案--------------------
建议是否可以采用HashMap
------解决方案--------------------
这是对于集合类的理解 , ArrayList 用于查询,比较方便,而且高效。
如果用于删除和插入建议使用 LikedList