`
zy19982004
  • 浏览: 661857 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

容器学习十:Vector & ArrayList & LinkedList

 
阅读更多

一.前言

  1. 以前对Vector这对象很陌生,用的少,对象的名字(Vector矢量,向量)也让人摸不着头脑,以为是什么新东西...
  2. 前文已经学习了ArrayList和LinkedList的源码,原本打算写个Vector源码分析的,但看了一下,Vector和ArrayList一样啊,于是作罢。本文就简单的对比下这三种List。

二.Vector & ArrayList

  1. Vector线程安全,所有的方法都synchronized。ArrayList线程不安全,裸奔。
  2. 扩容
    //ArrayList
    public void ensureCapacity(int minCapacity) {
    	modCount++;
    	int oldCapacity = elementData.length;
    	if (minCapacity > oldCapacity) {
    	    Object oldData[] = elementData;
                //直接扩到(oldCapacity * 3)/2 + 1
    	    int newCapacity = (oldCapacity * 3)/2 + 1;
        	    if (newCapacity < minCapacity)
    		newCapacity = minCapacity;
                // minCapacity is usually close to size, so this is a win:
                elementData = Arrays.copyOf(elementData, newCapacity);
    	}
     }
    
    //Vector
    private void ensureCapacityHelper(int minCapacity) {
    	int oldCapacity = elementData.length;
    	if (minCapacity > oldCapacity) {
    	    Object[] oldData = elementData;
                //当数组溢出时容量增加的量capacityIncrement,Vector构造函数里指定
                //扩到oldCapacity + capacityIncrement或者oldCapacity * 2
    	    int newCapacity = (capacityIncrement > 0) ?
    		(oldCapacity + capacityIncrement) : (oldCapacity * 2);
        	    if (newCapacity < minCapacity) {
    		newCapacity = minCapacity;
    	    }
                elementData = Arrays.copyOf(elementData, newCapacity);
    	}
    }
    
    
    
  3. 版本:Vector和Hashtable一样,所以jdk1.0就有的东西,代码质量一般。ArrayList在1.2里面出现。
  4. 命名:习惯ArrayList。比喻Vector removeElementAt(int index),而ArrayList remove(int index)。

三.ArrayList & LinkedList

  1. ArrayList内部用数组实现,LinkedList内部用双向链表实现。
  2. ArrayList遍历元素效率高,LinkedList插入删除元素效率高。
  3. 但问题不是绝对的,还是那句话,不同场景使用适合自己的数据结构。

四.PS

     超无技术含量的文章,欢迎拍砖,欢迎点评,让我发现Vector & ArrayList & LinkedList还有什么能让我眼前一亮的东西。

 

0
0
分享到:
评论

相关推荐

    对比Vector、ArrayList、LinkedList1

    在Java集合框架中,Vector、ArrayList和LinkedList是三种常见的List接口实现类,它们各自具有不同的特点和适用场景。下面我们将详细对比这三个类的区别。 1. **Vector** - **线程安全**:Vector是线程安全的,因为...

    第8讲 对比Vector、ArrayList、LinkedList有何区别1

    在Java集合框架中,Vector、ArrayList和LinkedList都是List接口的实现,它们提供了有序集合的功能,允许根据位置进行元素的添加、删除和查找。然而,它们在设计和性能上有着显著的区别。 首先,Vector是Java早期...

    Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)

    Java容器集合(equals和hashCode+基础数据结构+ArrayList+Vector和LinkedList) Java容器集合是Java中的一种基础数据结构,用于存储和管理数据。其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,...

    Java中Vector与ArrayList的区别详解

    - `LinkedList`虽然在随机访问上不如`ArrayList`和`Vector`,但在插入和删除操作上表现更好,因为它只需要修改相邻元素的链接,时间复杂度为O(1),但遍历速度慢。 5. **使用场景**: - 如果在单线程环境中,且...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    ### Java容器类详解:List、ArrayList、Vector及Map、HashTable应用 #### 一、Java容器类概述 在Java中,容器类(也称为集合类)主要用于存储和管理对象。Java SDK提供了一系列内置容器类,它们位于`java.util`...

    详解Java中Vector和ArrayList的区别

    在Java编程语言中,`ArrayList`和`Vector`都是实现`List`接口的容器类,它们主要用于存储和管理有序的元素集合。虽然两者都基于数组实现,但在功能特性和性能上存在显著差异。 1. **数据结构实现**: - `ArrayList...

    java练习题--容器使用练习

    7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如Vector、HashTable)和并发容器类(如ConcurrentHashMap、CopyOnWriteArrayList)。 8. 泛型:利用泛型在容器中存储特定类型的...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    总结来说,选择哪种容器取决于具体的需求:如果需要有序的元素集合,可以使用List,如ArrayList或LinkedList;如果需要键值对存储,可以选择Map,如HashMap或HashTable;在多线程环境下,需考虑同步性能,可以选择...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...

    JAVA提高第十篇 ArrayList深入分析

    ArrayList是Java集合框架中常用的类,它继承自AbstractList,并实现了List接口,提供了一种基于动态数组的...在并发环境下,应考虑使用线程安全的容器,如Vector或使用Collections.synchronizedList()来同步ArrayList。

    Java 最常见的 208 道面试题:第二模块答案

    - **性能**:ArrayList 比 Vector 快,因为 Vector 的所有操作都是同步的,这会影响性能。 - **功能**:ArrayList 更通用,可通过 Collections 工具类轻松获得同步列表或只读列表。 **Array 和 ArrayList**: - **...

    JAVA-面试题大全(含答案)

    阐述ArrayList、Vector、LinkedList的存储性能和特性。 答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及...

    浅谈 java中ArrayList、Vector、LinkedList的区别联系

    在Java编程语言中,ArrayList、Vector和LinkedList是三个常见的列表实现,它们都实现了List接口,因此都支持元素的增删改查操作。然而,它们在内部实现和性能特性上存在显著差异。 首先,ArrayList和Vector都是基于...

    使用LinkedList模拟堆栈

    在Java中,虽然ArrayList和Vector类也可以用来实现堆栈,但LinkedList由于其特性,如高效地添加和删除元素,更适合作为堆栈的基础。 以下是使用LinkedList模拟堆栈的步骤: 1. 首先,我们需要创建一个LinkedList...

    各容器与迭代器的用法.docx

    本篇将详细介绍几种常见的容器类(如LinkedList、Vector、ArrayList和Hashtable)以及它们的迭代器用法。 1. **LinkedList**: LinkedList是一种双向链表,它允许在列表的任何位置插入和删除元素。由于其结构,...

    java类容器总结文档

    Java 类容器是 Java 编程中非常重要的一个概念,它主要指的是 Java 集合框架中的各种类,如 ArrayList、LinkedList、HashSet、HashMap 等,这些类用于存储和管理对象。本文将深入探讨这些常用的Java类容器,帮助...

    Java程序员面试题搜集

    9. **ArrayList、Vector和LinkedList的存储性能和特性**: - ArrayList:基于动态数组,适合随机访问,插入和删除效率较低。 - Vector:与ArrayList类似,但线程安全,性能稍低。 - LinkedList:基于链表,插入和...

    迅速掌握Java容器中常用的ArrayList类与Vector类用法

    ArrayList和Vector是两种常用的容器类,它们都实现了List接口,属于Java集合框架的一部分。本篇文章将详细探讨这两个类的用法及其基本功能。 首先,我们来看ArrayList类。ArrayList是一个基于数组的动态列表,它...

    java对象容器(涉及HashMap,ArrayList,Set等)

    ArrayList、LinkedList和Vector是实现List接口的典型例子。ArrayList适合于频繁访问元素但较少改变元素顺序的情况,而LinkedList则在元素的插入和删除上更高效,因为它不需移动元素。 Set接口代表不包含重复元素的...

Global site tag (gtag.js) - Google Analytics