Vector和ArrayList异同与LinkedList和ArrayList异同

Vector和ArrayList异同如下

存储方式看

Vector与ArrayList想相比 vector的安全系数更高

ArrayList的采用数组的方式实现存储数据,实现了可以改变数组的大小 ,它允许然后元素 (包括null)


特点:

(1)ArrayList没有同步。

(2)此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢。

2、Vector也是采用数组方式存储数据,由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差。
List v=new ArrayList();
	v.add("a");
	v.add("b");
	v.add("c");
	Iterator i=v.iterator();
	while(i.hasNext()) {
		System.out.println(i.next());
	}
}

其特点:

(1)Vector是同步的
Vector v=new Vector();
	v.add("a");
	v.add("b");
	v.add("c");
	Iterator i=v.iterator();
	while(i.hasNext()) {
		System.out.println(i.next());
	}
(2)由Vector创建的Iterator,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

LinkedList和ArrayList异同如下

差别与运用

arraylist类似数组,linkedlist类似链表,数组的优势是读取访问时可以根据索引直接找到,所以在读取的时候相比linkedlist快,但是删除需要逐个移动,而linkedlist再删除的时候只需要修改下指针然后释放掉要删除的内容就可以了,所以一般用arrayList用作读取比较多的时候,而linkedList用在删除比较多的时候。

static final int s = 50000;  
	  
    static long timeList(List list) {  
        long start = System.currentTimeMillis();  
        Object o = new Object();  
        for (int i = 0; i < s; i++) {  
            list.add(0, o);  
        }  
        return System.currentTimeMillis() - start;  
    }  
  
    static long readList(List list) {  
        long start = System.currentTimeMillis();  
        for (int i = 0, j = list.size(); i < j; i++) {  
  
        }  
        return System.currentTimeMillis() - start;  
    }  
  
    static List addList(List list) {  
        Object o = new Object();  
        for (int i = 0; i < s; i++) {  
            list.add(0, o);  
        }  
        return list;  
    }  
public static void main(String[] args) {
		 System.out.println("ArrayList添加" + s + "条耗时:" + timeList(new ArrayList()));  
	        System.out.println("LinkedList添加" + s + "条耗时:" + timeList(new LinkedList()));  
	  
	        List list = addList(new ArrayList<>());  
	        List list1 = addList(new LinkedList<>());  
	        System.out.println("ArrayList查找" + s + "条耗时:" + readList(list));  
	        System.out.println("LinkedList查找" + s + "条耗时:" + timeList(list1));  
	}





 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值