Arraylist 和 linkedlist || hashset 和treeset. || hashMap 和 TreeMap

 

 

1. ArrayList和LinkedList的区别和使用场景   
ArryList 与linkedList 都实现了List 接口 
    ArrayList:实现list接口 采用数组结构保存对象 
              优势:便于对集合进行快速的随机访问 查询操做效率比较高 
              缺点:插入和删除操做效率比较低 
              缘由:指定位置索引插入对象时,会同时将此索引位置以后的全部对象相应的向后移动一位。删除会同时向前移动一位。 
    linkedList:实现list接口 采用链表结构保存对象 
              优势:插入和删除操做效率比较高 
              缺点:查询操做效率比较低 
              缘由:链表结构在插入对象时只须要简单的需该连接位置,省去了移动对象的操做 在查询上LinkedList只能从链表的一端移动到另外一端故效率较低 
使用场景: 
  ArrayList使用场景:通常顺序遍历状况下使用ArrayList 尽可能不对ArrayList进行插入或删除操做(删除尾部除外),如有屡次删除/插入操做又有随机遍历的需求,能够再构建一个ArrayList,把复合条件的对象放入新ArrayList,而不要频繁操做原ArrayList 

  LinkedList使用场景:常常有删除/插入操做而顺序遍历列表 算法

 

 

3. HashSet与TreeSet的使用场景 
HashSet:哈希表是经过使用称为散列法的机制来存储信息的,元素并无以某种特定顺序来存放 
TreeSet:提供一个使用树结构存储Set接口的实现(红黑树算法),对象以升序顺序存储,访问和遍历的时间很快。
使用场景:HashSet是基于Hash算法实现的,其性能一般都优于TreeSet。咱们一般都应该使用HashSet,在咱们须要排序的功能时,咱们才使用TreeSet。 


4.HashSet与TreeSet的底层运行方式: 数组

HashSet集合对象的加入过程: 
hashset底层是hash值的地址,它里面存的对象是无序的。 
第一个对象进入集合时,hashset会调用object类的hashcode根据对象在堆内存里的地址调用对象重写的hashcode计算出一个hash值,而后第一个对象就进入hashset集合中的任意一个位置。 
第二个对象开始进入集合,hashset先根据第二个对象在堆内存的地址调用对象的计算出一个hash值,若是第二个对象和第一个对象在堆内存里的地址是相同的,那么获得的hash值也是相同的,直接返回true,hash获得true后就不把第二个元素加入集合(这段是hash源码程序中的操做)。若是第二个对象和第一个对象在堆内存里地址是不一样的,这时hashset类会先调用本身的方法遍历集合中的元素,当遍历到某个元素时,调用对象的equals方法,若是相等,返回true,则说明这两个对象的内容是相同的,hashset获得true后不会把第二个对象加入。性能

 

TreeSet集合对象的加入过程: 
TreeSet的底层是经过二叉树来完成存储的,无序的集合 
当咱们将一个对象加入treeset中,treeset会将第一个对象做为根对象,而后调用对象的compareTo方法拿第二个对象和第一个比较,当返回至=0时,说明2个对象内容相等,treeset就不把第二个对象加入集合。返回>1时,说明第二个对象大于第一个对象,将第二个对象放在右边,返回-1时,则将第二个对象放在左边,依次类推 code

 

 

 

 

5. HashMap与TreeMap的使用场景 
HashMap经过hashcode对其内容进行快速查找,而 TreeMap中全部的元素都保持着某种固定的顺序,若是你须要获得一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。 
使用场景 
HashMap:适用于在Map中插入、删除和定位元素。 
Treemap:适用于按天然顺序或自定义顺序遍历键(key)对象

 

对于定位一个值,插入一个数目以及删除一个条目而言,HashMap是高效的。blog

 

6. HashMap  与 TreeMap  与 LinkedHashMAp排序

  HashMap 是 无序的索引

  TreeMap 是按键的升序排列的。接口

  LinkedHashMap 是 按元素最后一次访问的时间从早到晚排序的。内存

 

参考:http://liuyuan418921673.iteye.com/blog/2256120

相关文章
相关标签/搜索