码迷,mamicode.com
首页 > 其他好文 > 详细

List,Set,Map

时间:2015-03-06 15:22:35      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

1、Collection 和 Map 的区别

容器内每个为之所存储的元素个数不同。
Collection类型者,每个位置只有一个元素。List,Set
Map类型者,持有 key-value pair,像个小型数据库。

 

2、各自旗下的子类关系

 

Collection
    --List: 将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。有序
          --ArrayList / LinkedList / Vector
    --Set : 不能含有重复的元素    无序不重复
          --HashSet / TreeSet
Map     键值对
    --HashMap
    --HashTable
    --TreeMap

List特点:元素有放入顺序,元素可重复 

Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 
Map特点:元素按键值对存储,无放入顺序 

 

3、其他特征

*  List,Set,Map将持有对象一律视为Object型别。
*  Collection、List、Set、Map都是接口,不能实例化。
   继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
*  vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。

 

List:

LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢 

  Query接口有一个实现类:LinkList 
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 

Set:

HashSet(底层由HashMap实现),LinkedHashSet 
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) 

Map:

HashMap,HashTable,LinkeHashMap 
  HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null 
 SortedMap有一个实现类:TreeMap 

list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对

4. 存取

  1. List 通过下标来存取 和值来存取    add/get
  2. Map 键值对应来存取    put(k,v) / get(k)    keySet()抽取key序列   values()抽取value序列
  3. set 存取元素是无序的    set.add("a") /  set.iterator().hasNext()

 

 

线程安全:

synchronized  多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题

 hashing
       哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。
       我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。
       
       发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。

 

 

Array , Arrays

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、
array效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array
  arrays中拥有一组static函数,
  equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
  fill():将值填入array中。
  sort():用来对array进行排序。
  binarySearch():在排好序的array中寻找元素。
  System.arraycopy():array的复制。

 

 

 

List,Set,Map

标签:

原文地址:http://www.cnblogs.com/kxdblog/p/4318074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!