Java -- Vector底层结构-- ArrayList和LinkedList的比较

目录

1. Vector底层结构和源码剖析

2. LinkedList的全面说明

3. ArrayList和LinkedList的比较

如何选择ArrayList和LinkedList:

4. Set接口和常用的方法

Set接口的遍历方式:


1. Vector底层结构和源码剖析

1. Vector底层也是一个对象数组,protected Object【】 elementData

2. Vector是线程同步的 ,操作方法带有synchronized

3. 在开发中,需要做线程同步安全时,考虑使用Vector


2. LinkedList的全面说明

1. LinkedList底层实现了双向链表和双端队列的特点

2. 可以添加任意元素,包括null

3. 线程不安全,没有实现同步


3. ArrayList和LinkedList的比较

ArrayList:可变数组,效率较低 数组扩容 改查效率较高

LinkedList:双向链表 较高,通过链表追加  改查效率较低

如何选择ArrayList和LinkedList:

1. 如果我们改查的操作多,选择ArrayList

2. 如果我们增删的操作多,选择LinkedList

3. 一般来说,在程序中,80%-90%都是查询,因此大部分情况下会选择ArrayList

4. 在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另外一个模块是LinkedList,也可以根据业务来进行选择


4. Set接口和常用的方法

和list接口一样,set接口也是Collectiond子接口,因此常用方法和Collection接口一样

Set接口的遍历方式:

同Collection的遍历方式一样,因为Set接口是Collection接口的子接口。

1. 可以使用迭代器      2. 增强for     3. 不能使用索引的方式来获取

//1. 以Set接口的实现类 HashSet来讲解 Set接口的方法
        // set接口实现类的对象(Set接口对象)
        // set接口对象存放数据是无序的  即添加顺序和取出顺序不一致
        // 取出顺序固定的  不会变化  虽然不是添加顺序
        Set set = new HashSet();
        set.add("jone");
        set.add("luck");
        set.add("jone");//
        set.add(null);
        set.add(null);//
        System.out.println("set="+set);

        //
        System.out.println("=======");
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object obj =  iterator.next();
            System.out.println("obj="+obj);
        }
        //
        System.out.println("=====for=====");
        for (Object o :set) {
            System.out.println("o="+o);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值