精华内容
下载资源
问答
  • ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全) ,通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。LinkedList也是线程不安全的, LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。

    展开全文
  • ArrayList、Vector、LinkedList存储性能和特性 考察点:ArrayList 参考回答: ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便 增加和插入元素,它们都允许直接按序号索引...

    ArrayList、Vector、LinkedList 的存储性能和特性
    考察点:ArrayList
    参考回答:
    ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便 增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操 作,所以索引数据快而插入数据慢, Vector 中的方法由于添加了 synchronized 修饰,因此 Vector 是线程安全的容器,但性能上较 ArrayList 差,因此已经是 Java 中的遗留容器。LinkedList 使 用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号 索引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更高),按序号 索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速 度较快。 Vector 属于遗留容器(Java 早期的版本中提供的容器,除此之外, Hashtable、 Dictionary、 BitSet、Stack、Properties 都是遗留容器),已经不推荐使用,但是由于 ArrayList 和 LinkedListed 都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具 类 Collections 中的 synchronizedList 方法将其转换成线程安全的容器后再使用(这是对装潢 模式的应用,将已有对象传入另一个类的构造器中创建新的对象来增强实现)。

    展开全文
  • 简述ArrayList、Vector和LinkedList存储性能和特性。   ArrayList和Vector是采用数组方式存储集合中的元素,元素之间内存地址是连续的。此数组元素数大于实际存储的数据增加和插入新数据,都允许直接序号索引...

    简述ArrayList、Vector和LinkedList的存储性能和特性。

      1、ArrayList和Vector是采用数组方式存储集合中的元素,元素之间内存地址是连续的,此数组元素数大于实际存储的数据,以便增加和插入新数据。
      2、ArrayList和Vector都允许直接序号索引元素,可以快速查找;但是插入和删除数据需要移动数据,所以效率低。
      3、Vector由于使用了synchronized方法(线程安全),所以性能比ArrayList差。
      4、LinkedList是使用链表结构保存集合中的元素,元素之间内存地址不连续。按序号索引数据需要进行向前或向后遍历,即需要进行寻执操作。LinkedList数据插入或删除不需要移动数据,具有较高的修改性能。

    展开全文
  • 数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到更大的连续存储空间中。 由于数组存储空间的连续特性,当从数组的中间位置插入或者删除元素时,需要对数组...

    阐述ArrayList、Vector、LinkedList的存储性能和特性

    一个不错的答案

    ArrayList和Vector内部都是通过数组实现的,允许快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到更大的连续存储空间中。

    由于数组存储空间的连续特性,当从数组的中间位置插入或者删除元素时,需要对数组进行复制和移动,这些操作的代价都是比较高的,因此,数组结构擅长索引数据,不擅长数据的插入和删除。

    Vector中的方法使用了synchronized修饰,具有线程安全的特性,ArrayList中的方法没有使用synchronized修饰,不具有线程安全的特性,但也正因如此,性能比Vector高出许多。

    LinkedList使用双向链表实现存储(双向链表将内存中零散的内存单元通过引用关联起来,形成一个可以按序索引的线性结构),双向链表不支持随机存取,其索引数据需要进行前向或后向遍历,因此其不擅长索引数据;于此同时,该结构在插入数据时只需要记录本项的前后项即可,因此其擅长数据的插入和删除。

    Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList和LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这是对装潢模式的应用,将已有对象传入另一个类的构造器中创建新的对象来增强实现)。

    补充

    下面这段代码使用Collections中的synchronizedList方法将非线程安全的容器转换为线程安全的容器。

    List<String> list = Collections.synchronizedList(new ArrayList<String>());
    list.add("1");
    list.add("2");
    list.add("3");
    
    synchronized (list) {
        Iterator i = list.iterator(); // Must be in synchronized block
        while (i.hasNext()) {
            //foo(i.next());
            System.out.println(i.next());
        }
    }
    

    细心的你一定马上意识到了这段代码一些不同寻常的地方,既然新创建的容器是线程安全的,那为什么在调用其某些方法的时候还需要加锁呢?

    再来看一下Collections的synchronizedList方法。

    public static <T> List<T> synchronizedList(List<T> list) {
        return (list instanceof RandomAccess ?
        new SynchronizedRandomAccessList<>(list) :
        new SynchronizedList<>(list));
    }
    

    该方法会根据你传入的list是否实现RandomAccess这个接口来确定是返回SynchronizedRandomAccessList的实现还是SynchronizedList的实现。比如,ArrayList就实现了RandomAccess这个接口,用于表示支持随机存取。LinkedList没有实现RandomAccess这个接口,表示不支持随机存取,只支持通过遍历的方式来进行存取。

    其实不论返回的是哪种类型的实现,其本质都是通过包装synchronized关键字到非线程安全的容器方法来将其转化为线程安全的容器。

    下面截取了SynchronizedList中的部分代码:

    使用了线程同步关键字synchronized

    没有使用线程同步关键字synchronized

    可以看到源码中的add(),remove()等方法包装了synchronized关键字,listIterator(),iterator()等方法没有包装synchronized关键字。

    这也就解释了,为什么使用后面两种方法的时候,必须手动加锁(Must be manually synched by user),成功破案!

    (完)

    展开全文
  • 1.请说出 ArrayList,Vector, LinkedList存储性能和特性 解答:ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素...
  • 此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。 Vector中的方法由于添加了synchronized修饰,因此...
  • ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...
  • ArrayList,Vector, LinkedList存储性能和特性? 1).ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置 中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存 放在独立的...
  • ArrayList,Vector,LinkedList存储性能和特性是什么? 考察点:ArrayList 参考回答: ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便 增加和插入元素,它们都允许直接按序号...
  • 请说出ArrayList,Vector, LinkedList存储性能和特性 解答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要...
  • ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据 ...法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序 号索引数据需要进行前向或后向遍...
  • ArrayList,Vector,LinkedList存储性能和特性 HashMap和Hashtable的区别: ArrayList, Vector:以数组的方式存储 增加删除很慢 查询修改很快 ArrayList:线程不安全 速度快 vector:线程安全,速度慢...
  • ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据效率较低, ...
  • ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...
  • ArrayList、Vector、LinkedList 存储特性 ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入...
  • ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...
  • ArrayList和Vector都是使用数组的方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素的移动等内存操作,所以索引数据快但插入数据慢,...
  • 说出ArrayList,Vector, LinkedList存储性能和特性  ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...
  • ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢。 ...
  • 阐述ArrayList、Vector、LinkedList存储性能和特性? ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 896
精华内容 358
关键字:

linkedlist增加存储