• 黑马程序猿——JAVA基础——集合


    ----------android培训、java培训、java学习型技术博客、期待与您交流。------------ 
    一、关于java中的集合类
           首先看一下,大致的框架流程图
          
    通过这些我们能够看出来,通常我们常常採用的vector、arraylist、hashset。treeset,hashmap。hashtable,treemap、linkedlist类
    关于vector和arraylist对照,vector是线程安全的,vector通过遍历。性能更高。

    ArrayList和Vector功能类似。

    Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。

    所以Vector在JavaME、Card等各种微小版本号都能够使用,而ArrayList不能

    ArrayList不具备线程同步的安全性,但速度较快。

    Vector具备线程安全。


    而对于hashmap和hashtable

    Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的。HashMap是Java 1.2引进的Map接口的一个实现。
      
      或许最重要的不同是Hashtable的方法是同步的。而HashMap的方法不是。这就意味着。尽管你能够不用採取不论什么特殊的行为就能够在一个多线程的应用程序中用一个Hashtable,但你必须相同地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法能够让你同步訪问潜在的HashMap。这么做的结果就是当你不须要同步时,你不能切断Hashtable中的同步(比方在一个单线程的应用程序中),并且同步添加了非常多处理费用。
      
      第三点不同是,仅仅有HashMap能够让你将空值作为一个表的条目的key或value。HashMap中仅仅有一条记录能够是一个空的key,但随意数量的条目能够是空的value。这就是说,假设在表中没有发现搜索键,或者假设发现了搜索键,但它是一个空的值,那么get()将返回null。

    假设有必要,用containKey()方法来差别这两种情况。


      
      一些资料建议。当须要同步时,用Hashtable,反之用HashMap。可是,由于在须要时,HashMap能够被同步,HashMap的功能比Hashtable的功能很多其它,并且它不是基于一个陈旧的类的,所以有人觉得,在各种情况下,HashMap都优先于Hashtable。
    二、对于java集合框架


    他们之间的比較:

        是否有序 是否同意元素反复
    Collection
    List
    Set AbstractSet
      HashSet
      TreeSet 是(用二叉排序树)
    Map AbstractMap 使用key-value来映射和存储数据。key必须唯一,value能够反复
      HashMap
      TreeMap 是(用二叉排序树)

     

      

  • 相关阅读:
    Redis实现分布式锁
    Redis数据结构
    Mysql与redis缓存一致性
    mysql分库分表
    mysql主从同步
    mysql配置优化
    Netty 参数优化
    JAVA多线程之park & unpack
    网络时钟服务器(网络校时服务器)无法同步的排查方法
    GPS北斗共视授时中的多径效应分析
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7109370.html
Copyright © 2020-2023  润新知