【java集合】

ArrayList

底层是数组,可以动态扩容的数组,初试容量是10,扩容因子1.5,每次扩容1.5倍,线程不安全
Java面试之ArrayList为什么线程不安全?
Vector:Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢

使ArrayList线程安全
方法:
	List list = new ArrayList<>(2);
	List list1 = Collections.synchronizedList(list);
	ArrayList包装成线程安全的List后,和Vector的性能差不多

面试题:

public static void main(String[] args) {
    Integer[] array = {1,2};
    List<Integer> integerList = Arrays.asList(array);
    Object[] objectArray = integerList.toArray();
    System.out.println(objectArray.getClass()==Object[].class); //false
    System.out.println(objectArray.getClass()); //class [Ljava.lang.Integer;
    System.out.println(Object[].class); //class [Ljava.lang.Object;

    List<Integer> list = new ArrayList<>();
    System.out.println(list.toArray().getClass()==Object[].class);//true

    List list2 = new ArrayList();
    System.out.println(list.getClass()==list2.getClass());//true
}

LinkedList

底层是双向链表

Java集合LinkedList用法总结

数据结构与算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值