java集合框架复习

数组类Array是java中最基本的一个存储结构,它用于存储java

一组连续的对象或一组类型相同的基本类型的数据。 算法

 Array特色:效率高,但容量固定且没法动态改变,数组

                缺点:没法判断其中存有多少元素,length只是告诉咱们Array的容量.多线程

 Arrays类: 专门用来操做Array,提供搜索,排序,复制等框架

静态方法. 性能

Arrays中equals():比较两个Array是否相等,Array拥有相同元素个数,且全部对应元素两两相等.spa

            fill():将值填入Array中.线程

            sort():用来对Array进行排序.对象

            binarySearch():在排好序的Array中寻找元素.排序

            System.arraycopy():Array的复制. 

  Vector:基于Array的List,性能也就不可能超越Array,而且Vector

是“sychronizend”的,这个也是Vector和ArrayList的惟一区别.

 ArrayList:同Vector同样是一个基于Array的,但不一样的是ArrayList

不是同步的.因此在性能上要比Vector优越一些,可是运行到多线程环境

中时,须要本身管理线程的同步问题.从其命名中能够看出它是一种相似数组的形式进行存储,所以它的随机访问速度特快

 LinkedList:LinkedList不一样于前面两种List,它不是基于Array的.

 由于是基于链表实现的,data,(节点自己数据)nextNode(下一个节点)

因此更适用于 插入,删除操做.

 【注意全部的List能够有null元素,元素能够重复】

  移除List重复元素:

       方法一:经过HashSet剔除 (本人喜欢使用的方式:使用的是hash数组不能产生重复数据的特性,来转换LIST)

//  删除ArrayList中重复元素 
    HashSet hSet  =   new  HashSet(list);
    list.clear();
    list.addAll(hSet);
    System.out.println(list); 
         方法二: 删除ArrayList中重复元素,保持顺序 
   // 删除ArrayList中重复元素,保持顺序 
 public   static   void  removeDuplicateWithOrder(List list)   {
      Set set  =   new  HashSet();
      List newList  =   new  ArrayList();
   for  (Iterator iter  =  list.iterator(); iter.hasNext();)   {
         Object element  =  iter.next();
         if  (set.add(element))
            newList.add(element);
     } 
     list.clear();
     list.addAll(newList);
     System.out.println( " remove duplicate "   +  list);

 }   

 HashSet:set同list同样都实现了Collection接口,可是他们的实现方式却大不同. 【list是以Array为基础的,而Set则是HashMap的基础上实现的】

 HashSet的存储方式是把HashMap中的Key做为Set的 对应存储项,这也是为何在Set中不能像在List中同样有重复的项的根本缘由,由于HashMap的key是不能有重复的。HashSet能快速定位 一个元素,可是放到HashSet中的对象须要实现hashCode()方法0。

  TreeSet:Treeset将放入其中的元素按序存放,这就要求你放入其中的

对象时可排序的,这就用到了集合框架提供的另外两个实用类

Comparable和Comparator。 

 【一个类是可排序的,它就应该实现Comparable接口.】

 【有时多个类具备相同的排序算法,那就不须要重复定义相同的排序算法,只要实现Comparator接口便可】

TreeSet是SortedSet的子类,它不一样于HashSet的根本就是TreeSet

是有序的,它是经过SortedMap来实现的.

 HashMap:也用到了哈希码的算法,以便快速查找一个键,

TreemMap对键按序存放,所以它有一些扩展的方法,好比firstkey(),lastkey()等. 当多个线程访问treemap时,要本身为之提供外同步.

HashTable:不容许空键或值.Hashtable的方法是Synchronize的,

在多个线程访问Hashtable时,不须要本身为它的方法实现同步. 

 【Map有两种比较经常使用的实现:HashTable.HashMap和TreeMap.】

相关文章
相关标签/搜索