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是线程安全的