`
kong_bai
  • 浏览: 138684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Vector与List的区别

SUN 
阅读更多
1,vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。
2,如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势。
3,如果查找一个指定位置的数据,vector和arraylist使用的时间是相同的,都是0(1),这个时候使用vector和arraylist都可以。而如果移动一个指定位置的数据花费的时间为0(n-i)n为总长度,这个时候就应该考虑到使用linklist,因为它移动一个指定位置的数据所花费的时间为0(1),而查询一个指定位置的数据时花费的时间为0(i)。


另:如果你注意到对Vector和List的所开始支持的Java版本你就应该可以找到答案了。Java对Vector的支持since 1.0;对List则是since 1.2。这两个版本之间,sun对于java api做了很多的改动,其中的一个refactoring就是提出了所谓的Collection FrameWork,List就是在那个时候被introduced,它完全符合1.2版本的collection framework,而Vector则是在Colleciton framework出现之前就已经存在了,但java api并没有将Vector变成Deprecated,主要是backward compatiable的问题,最终JCP将vector做了refactoring的处理,让它符合所定制的Collection framework了事。另外,Hashtable和HashMap的区别是同样的道理。

结论:尽量采用List和HashMap,rather than Vector&Hashtable
分享到:
评论

相关推荐

    vector list map pair stl 标准模板库 c++

    在这个主题中,我们将深入探讨四个关键的容器:vector、list、map以及pair,它们都是STL中的重要组成部分。 1. **vector**: - `vector`是一种动态数组,允许在任何位置插入和删除元素。它的元素是连续存储的,...

    STL中vector、list、deque和map的区别

    STL中vector、list、deque和map的区别

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    `Vector`也是`List`接口的实现,与`ArrayList`类似,但它是线程安全的。这意味着在多线程环境下,多个线程可以同时操作`Vector`而不会产生数据不一致的问题。但是,由于其同步机制,性能通常低于`ArrayList`。 4. ...

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

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

    在vector和list中插入数据

    4. **插入多个元素**: `insert迭代器, N, Elem)` - 插入N个相同元素,与`std::vector`不同,list的这个操作时间复杂度仍为O(1)。 5. **插入范围的元素**: `insert迭代器, 首迭代器, 末迭代器)` - 与`std::vector`...

    Java 中的vector和list的区别和使用实例详解

    "Java 中的 vector 和 list 的区别和使用实例详解" 在 Java 中,vector 和 list 是两个常用的容器类,它们都是 STL(Standard Template Library)的一部分。STL 是一个泛型程序设计的库,它提供了一些常用的数据...

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

    Vector与ArrayList类似,但它提供了一种线程安全的实现,这意味着在多线程环境中,多个线程可以同时访问和修改Vector,而不会导致数据不一致。然而,由于其同步机制,Vector的性能通常低于ArrayList。 3. Map接口与...

    区别和联系-list-map-set-vector

    ### 区别与联系:List、Map、Set、Vector #### List List 是 Java 集合框架中的一个接口,它允许元素重复,并且每个元素都有一个特定的顺序位置。这意味着可以通过索引来访问 List 中的元素。List 提供了多种实现...

    map,list,set,stack,queue,vector等区别和特点1

    Vector与ArrayList类似,但它是线程安全的,适合多线程环境。 Set接口则代表无序且不允许重复元素的集合。HashSet是最常见的实现,它依赖于哈希表提供快速查找,但无特定顺序;LinkedHashSet保持插入顺序,而...

    vector list

    ### `vector`与`list`的选择 选择`vector`还是`list`取决于具体的需求。如果你需要快速访问元素并保持元素顺序,`vector`是更好的选择。若经常需要在中间插入和删除元素,或者需要保持迭代器在插入和删除后的有效性...

    list和vector的区别共1页.pdf.zip

    在C++编程中,`list`和`vector`是两种常用的数据结构,它们都是STL(Standard Template Library,标准模板库)的一部分。虽然它们都用于存储和管理元素序列,但它们的设计理念、性能特性和使用场景有着显著的区别。...

    ArrayList LinkedList Vector区别

    ArrayList LinkedList Vector 区别 ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 ...

    C++STL vector list map set dqueue 等应用举例及PPT讲解示例,代码演示

    在这个主题中,我们将深入探讨vector、list、map、set和deque这五个主要的STL容器,并通过具体的例子和PPT讲解来理解它们的应用。 1. **vector**:vector是动态数组,它可以方便地在任何位置插入和删除元素,但主要...

    vector list 简单 实例

    其中包含3个例子 vector list 还一个是vector 对象 是一个指针 程序结束要释放内存 其中 vector 和 list 都介绍了 find 函数的使用 find 的 内容 是一个结构 或者 类。 如果是结构体的话 要重载 == 这是使用时要注意...

    c++容器list、vector、map、set区别与用法详解

    c++容器list、vector、map、set区别 list 封装链表,以链表形式实现,不支持[]运算符。 对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向)。 新添加的元素,...

    STL讲义其中包含部分有: vector list map,还有一些例子

    与vector不同,list中的元素不是连续存储的,因此在元素间移动或插入不会引起大量的内存拷贝。例如,可以使用`insert()`在指定位置插入元素,使用`erase()`删除元素,`begin()`和`end()`用于遍历整个list。 3. **...

    C++ STL vector 容器介绍

    学习`vector`容器时,还需要理解其与其他STL容器如`deque`、`list`和`array`的区别,以便在不同的场景下选择最合适的容器。例如,`deque`在两端插入和删除更高效,`list`则适合频繁的插入和删除,而`array`是固定...

    list 类 vector

    在C++编程语言中,`std::list`和`std::vector`是两种常见的容器,它们都用于存储和管理元素序列。尽管它们都是容器,但它们的设计理念、性能特性和使用场景有所不同。在这个"list类vector练练手"的主题中,我们将...

    vector操作vector操作vector操作

    在深入探讨STL(Standard Template Library)中的容器如`vector`、`list`与`deque`的操作之前,我们首先简要回顾一下这些容器的基本概念及其在C++编程环境中的重要性。`vector`、`list`和`deque`是STL中三种基本的...

Global site tag (gtag.js) - Google Analytics