有关Java容器的基础知识

Java中容器是Java3中比较方便快捷的容器,在各种程序中运用的比较多,给我们的编程带来了很大的方便。

 
  现将我整理的基本知识列出,供学习参考使用,这些知识全都是在Java编程思想这本书中看到的。有不对之处多多指教。
 
  按次序介绍如下:
 
  Array的长度是固定的且无法动态改变其长度,也就是说定义大小后,此变量的大小不可以再改变了,但它是最有效的一个容器,存取速度相当快。
 
  Array对象用length成员进行计算元素个数,通过[]来取用数据,array对象无法判断元素个数,只能计算其容量。
 
  Array类拥有一组static函数,equals(),fill(),sort(),binary(),
 
  Array复制System.arrayCopy().
 
  compareTo()接受一个对象引数,此引数大于自己时返回负值,相等时返回零,小于时返回正值。
 
 
  Java中的最关键的三个容器接口(list,set,map).
 
  List 是一个interface
 
  List以元素按插次序来放置元素,不会重新排列。
 
  ArrayList以Array实现完成的List,允许快速随机访问。如果只是简单地存取数据,而不对其中的数据进行有序插入使用此容器会很方便且速度很快。LinkList提供最佳循序访问,具有addFirst(),addLast(),getFirst(),getLast(),removeFirst(),removeLast(),如果需要在队列中插入一些数据,可用此容器。由于其list的灵活性,在各种程序中使用的比较多。
 
 
  Set 就是一个Collection 不接受重复元素,它使用自己内部的一个排列机制。
 
  Set拥有和Collection一样的interfaces
 
  HashSet注重查找时间,所有元素必须定义hashCode();对自己中的数据不进行有序排列,按照加入的先后次序进行排列。
 
  TreeSet底层结构为tree的一种有序Set. 内部数据进行有序排列。
 
 
  Map也不接受重复元素,重复与否以键值(key)判断,它拥有自己的内部排列机制。
 
  ArrayList使用数字来选择值,而Map使用另一个对象来取值。
 
  Map用put将Value值加入,用get()传回key对应的value。
 
  使用containsKey()和containsValue()来检查map内是否含有某个key或某个value。

 
  Map 包括两个maps ,HashMap,TreeMap
 
  HashMap会运用对象的hashCode()并利用它来快速找到key,带来巨幅的效率提升。HashMap取代了Java2中的HashTable容器。
 
  TreeMap基于红黑树完成的一个实现品,它的数据按次序排列并惟一拥有subMap(),此函数返回tree中的部分组成。
 
 
   容器的填充
 
  ArrayList以 add()方法进行数据的增加。容器有个Collections Class,含有一些static函数,比如fill(),它将用一个object reference 复制到容器的每个位置上(只能list有用),即把原先的值覆盖掉,此函数用处不大。
 
 
   迭代器Iterator
 
  迭代器是个对象,其职责便是走访以及选择序列中的一连串对象,迭代器是“轻量级”对晚,产生的代价极小。
 
  第一次调用Iterator的next()时,返回序列中的第一个元素。
 
  调用next()取得序列中的下一个元素。
 
  调用hasNext()检查序列是否还有其它元素。
 
  调用remove()移去迭代器最新传回的元素。
 
 
   外引:
 
  C++中的vector容器知道他所持有的对象隶属型别,但不进行边界检查,而Java中的容器都进行了边界检查,一旦越界即报RuntimeException。边界检查会带来额外的效率负担。
 
  Java中的容器可以持有Java任何对象(基本型别除外)。 一旦将对象装入容器,其型别就会丢失,当你使用的时候,必须先进行转型。

你可能感兴趣的:(java,数据结构,编程,J2SE)