`
xiongzhenhui
  • 浏览: 205673 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Map与List性能比较

阅读更多

1.Collection接口与Map的总体框架图

Collection  
├List  
│├LinkedList  
│├ArrayList  
│└Vector  
│ └Stack  
└Set  
Map  
├Hashtable  
├HashMap  
└WeakHashMap  

由上图可以看出:List和Set都源自Collection,而Map自成体系;

2.HashMap,ArrayList与HashTable,Vector的区别联系

    HashMap,ArrayList是异步执行的这样有助于提高工作效率,但并不是线程安全的.并且HashMap允许键值对的值为null;

    HashTable和Vector是同步执行的,但是线程安全,这样的效率不如HashMap和ArrayList

3.List集合性能比较:

    ArrayList是首选,在多用于查询使用时,ArrayList的效率更高;但在频繁进行删除,插入操作的时候应该用LinkedList,比如在进行堆栈和队列的操作时,就应该用LinkedList执行,此时的执行效率比JAVA自带的stack要高

4.Map集合性能比较:

    HashMap是首选,但是在整个Map类会需要更多的内存空间,以为有键值对的存在.HashMap用到了哈希函数,所以其key必须是唯一的,TreeMap是用红黑树进行实现的;Map还可用containKey()检查是否含量有某个key/value键值对

   

5.List集合的输出

    在Java里不建议循环执行Object obj =(Object)list.get(i); 这样的效率非常低

    建议使用Iterator迭代器的形式

                       Iterator ite = list.iterator();

                       while(ite.hasnext())

                           {

                                    Object obj = ite.next();

                           }

                                       

6.Collection与Collections的区别

      Collection是集合的接口类,而Collections是一个帮助类,提供了一些帮助函数,如搜索,反转等等

7.Vector向量:与ArrayList相似,多用于多线程,但是线程同步,用Iterator迭代输出时输捕获修改更新的异常

 向量的功能:

  1.能存储任意对象

  2.不能存储基本类型的数据,如39,除非将这些数据包裹在包裹类中

  3.其容量可以按需求自动扩充

  4.若果不用扩充容量,增加元素方法的效率较高

  方式:

  Vector myVector=new Vector()  //初始容量为10

  Vector myVector=new Vector(int cap)  // 初始容量为cap

  Vector myVector=new Vector(Collection col) //使用集合col的元素初始化,若果col为数组,需要先将数组转换成为List对象

  例:Vector myVector=new Vector(Arrays.asList(col));

  void add(Object obj)   //将给定的参数对象加入到Vector的原有元素的最后

  boolean addAll(Colletion col)  //将集合类对象中的所有元素加入到此方法的接收者对象中,如果接收者的结果有变化,则返回true

  int size()  //返回元素的个数

  boolean isEmpty()  //判断Vector是否为空

  Object get(int pos)   //返回指定位置的元素

  void set(int pos,Object obj)  //用obj替换Vector中位置为pos的对象

  boolean remove(Object obj)   //删除第一次找到的obj对象,返回true.找不到则返回false

  Objectremove(int pos)     //去除给定位置的元素,并返回被去除的对象

  boolean removeAll(Collection col)    //删除Vector中所有在col出现的对象,如果接收者的结果有变化,则返回true

  void clear()  //删除vector的所有元素

  boolean contain(Object obj)   //判断Vector是否包含obj

  boolean containAll(Collection col)  //判断Vector是否包含col中的所有元素

  int indexOf(Object obj)     //返回obj在Vector第一次出现的位置,如果找不到则返回-1

  Enumeration elements()     //返回Vector中所有元素的Enumeration对象,注意此方法不能用于ArrayList

  Iterator iterator()    //返回Vector中所有元素的Iterator对象

  特别注意:Object get(int pos)  //读取位置为pos的元素,因其返回的是Object对象,所以需要对其进行塑性(显式转换)

  例:

  for(int i=0;i<v.size();i++)

  Custmer c=(Custmer)v.get(i);      //每次从v读出的对象都需要进行显式转换才可以正确使用

8.Vector与ArrayList比较:

               a:Vectors是可同步化的,Vector的内容的方法都是线程安全 的;

               b:Vector在默认情况下是产生一个双倍大小,而ArrayList增加50%的大小;

               c:Vector确实有一点点优势,因为你可以指定增加值(译者按,如果没有猜错的话,作者说的方法应该是 setSize(int newSize) Sets the size of this vector.)。

分享到:
评论

相关推荐

    《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)

    《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)

    vue使用map代替Aarry数组循环遍历的方法

    因此使用map,让数组(原本是list)变成一个map集合(key-value形式),把主键id当做key,下标当做value,一一对应,需要的时候直接使用map.get(key)就可以获取到对应的value 1.在data{}中先定义一个map全局变量 2...

    java面试宝典

    67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的基本类 17 70、多线程有几种实现...

    Java容器学习笔记:容器概览,容器中的设计模式,容器源码分析 - List,容器源码分析 - Map,容器源码分析 - 并发容

    容器源码分析 - List, 容器源码分析 - Map, 容器源码分析 - 并发容 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行。Java具有简单、可...

    vector,map,list,queue的区别详细解析

    可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销. 2。deque (小片的...

    Java集合类性能分析

    Java集合类性能分析 Collection List Map Set

    细讲c++ 各种STL容器的应用场合及性能

    c++ std stl各容器的应用场合及性能 map hash_map unordered_map multimap list forward_list vector set hash_set multiset unsorted_set queue deque priority_queue

    listjava源码-JdkCodeTree:Java源代码阅读之Object,String,List,Map

    Java源代码阅读之Object,String,List,Map ###Object类 Object ###String类 String ###List类 List ArrayList, Vector, LinkedList Arraylist和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便 ...

    vue使用map代替Aarry数组循环遍历

    因此使用map,让数组(原本是list)变成一个map集合(key-value形式),把主键id当做key,下标当做value,一一对应,需要的时候直接使用map.get(key)就可以获取到对应的value 1.在data{}中先定义一个map全局变量 2....

    spring 高性能 代码

    Map queryObjectByProc = (Map) baseFangService.queryObjectByProc(finder); System.out.println(queryObjectByProc.get("#update-count-10")); } //@Test 调用数据库函数 public void testFunction() throws...

    性能超越Redis的NoSQL数据库SSDB.zip

    SSDB 是一个 C/C 语言开发的高性能 NoSQL 数据库, 支持 zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据. SSDB 在 QIHU 360 被大量使用, 同时也被国内外业界...

    Dbutils项目实例

    MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache commons dbutils wrappers SqlNullCheckedResultSet :对...

    Java基础部分 Java代码查错算法与编程html&JavaScript&ajax部分面试题

    63、List、Map、Set三个接口,存取元素时,各有什么特点? 2 64、说出ArrayList,Vector, LinkedList的存储性能和特性 2 65、去掉一个Vector集合中重复的元素 2 66、Collection 和 Collections的区别。 2 67、Set里的...

    高性能NoSQL数据库外存.zip

    省去了到其它结点查询的代码,省去了记录相关服务的连接对象,一套代码同时满足单结点与分布式需求,从此没有分布式一说map与vector尚未实现,将在后续版本中实现,请期待支持平台:win linux性能:单个client测试,...

    40道java集合面试题含答案(很全很详细)

    Java集合类是Java.util包中的重要内容,它提供了一套性能优良、使用方便的接口和类,用于处理对象的集合。这些类主要用于存储、检索、操作一组对象数据。 Java集合类主要包括两种类型的容器:Collection和Map。...

    jackson-databind-3.0.0.jar下载

    2. 支持复杂对象与JSON的映射:支持Java类型如Map、List、数组以及自定义bean与JSON的相互转换。 3. 支持多种注解配置序列化和反序列化:支持@JsonIgnore, @JsonFormat, @JsonView等多种注解配置对象与JSON的映射方式...

    TechnicalMap:Technical knowledge map 技术类知识相关图谱

    :magnifying_glass_tilted_right: Linux性能监测分析工具 Linux Performance Observability Tools :chestnut: Linux内核运行原理图 Interactive Linux Kernel Map :penguin: Linux发行版时间轴 List of Linux

    java高级编程必须知道的集合详细讲解

    集合类型: 详细介绍集合框架中的各种集合类型,包括 List、Set、Map 以及 Queue 等。解释它们的特点、用途以及适用场景。 通过这份资源,您将获得全面的 Java 集合框架知识,从不同类型的集合到它们的实现类,从...

    json-20230227.jar下载

    json-20230227.jar下载,org.json是一款 ...4. 支持 JSON 对象和数组:可以将 JSON 对象和数组与 Java Map、List 相互转换。 5. 支持嵌套 JSON 对象:org.json 支持解析嵌套的 JSON 对象结构。 6. 双向转换:org.jso

    json-lib-2.4-jdk15.jar下载

    2. 支持对象图:可以将复杂的对象层次结构与JSON相互转换,支持List、Map、数组等类型。 3. 支持注解:支持@JSON、@JSONIgnore等注解配置对象的序列化和反序列化。 4. 支持流:除了支持对象/JSON与字符串的相互转换,也...

Global site tag (gtag.js) - Google Analytics