List遍历与删除

来源:互联网 发布:js for循环是什么作用 编辑:程序博客网 时间:2024/06/03 19:49

Collection
关于集合中比较重要的HashSet,HashMap,HashTable,ArrayList,LinkedList,Vector的区别和用法

//遍历的长度一定要是list.size(),因为后面移除对象之后就会导致list长度变化,如果使用常量,会导致边界异常
//例如:长度是10,删除掉了2个,而获取list对象的10个,则会爆边界异常,因此是使用list.size()

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListMap {
public static void main(String[] args) {
List list = new ArrayList();
for(int i=0; i<10; i++){
list.add(“testone”);
list.add(“testtwo”);
}

    /*这种方式在循环执行过程中会进行数据锁定,         * 性能稍差,         * 同时,如果你想在寻欢过程中去掉某个元素,只能调用it.remove方法,         * 不能使用list.remove方法,         * 否则一定出现并发访问的错误.      */    Iterator it1 = list.iterator();    while (it1.hasNext()) {        if(it1.equals("testone")){            System.out.println(it1);            it1.remove();        }        System.out.println(it1.next());    }     /*       * 第二种:内部调用第一种,换汤不换药,      * 因此比Iterator 慢,     * 这种循环方式还有其他限制,      * 不建议使用它。      *       */    for (String data : list) {        System.out.println(data);    }    /*     * 第三种:内部不锁定,效率最高,     * 但是当写多线程时要考虑并发操作的问题     *      */    for (int i = 0; i < list.size(); i++) {        //包含则删除        if(list.contains("testone")){            list.remove(i);        }        String a = list.get(i);        System.out.println(a);    }}

}
Vector是线程安全的

0 0
原创粉丝点击