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

Posted yutingliuyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑马程序猿——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 是(用二叉排序树)

 

  

 














以上是关于黑马程序猿——JAVA基础——集合的主要内容,如果未能解决你的问题,请参考以下文章

黑马程序猿——JAVA基础——IO流

黑马程序员——Java基础---多线程

黑马程序猿——JAVA高新技术——反射

黑马程序猿——JAVA面向对象的特性:封装,继承,多态

黑马程序猿_反射内省泛型

黑马程序猿 ---------- Java网络技术之 ---正則表達式 (Day06)