package com.bjpwernode.javase.LinkedList;
/*
链表的优点
由于链表上的元素在空间上内存地址不连续
所以随机增删元素的时候不会有大量元素需要移动位置,因此索引效率较高
在以后的开发中,如果遇到随机增删集合元素业务比较多的时候,建议使用LinkedList
链表缺点:
不能通过数学表达式计算备查找元素的内存地址,每一次都要从头节点开始遍历,知道找到为止。
所以LinkedList索引的效率低
*/
import java.util.LinkedList;
import java.util.List;
public class LinkedListTest1 {
public static void main(String[] args) {
//LinkedList底层也是有下标的
//注意:ArrayList之所以索引效率高,不是因为有下标,而是底层数组。
List list = new LinkedList();
list.add("a");
list.add("b");
list.add("c");
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
System.out.println(obj);
}
}
}
Vector集合
/*
Vector
1、底层也是一个数组
2、初始容量:10
3、扩容之后是原来的2倍
4、Vector中所有方法都是线程安全的,都有syschronized关键字
5、怎么将一个线程不安全的ArrayList集合转换成线程安全的?
使用工具类:java.util.Collections
*/
import java.util.*;
public class VectorTest {
public static void main(String[] args) {
//创建一个Vector集合
Vector vector = new Vector();
//添加元素
//默认容量是10
vector.add("1");
vector.add("2");
vector.add("3");
vector.add("4");
vector.add("5");
vector.add("6");
vector.add("7");
vector.add("8");
vector.add("9");
vector.add("10");
//满了之后扩容(扩容之后是20)
vector.add("11");
Iterator it = vector.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
//1
//2
//3
//4
//5
//6
//7
//8
//9
//10
//11
}
//这个以后可能会使用
List mylist = new ArrayList();
//变成线程安全的
Collections.synchronizedList(mylist);
}
}