转:Java中容器是Java3中比较方便快捷的容器,在各种程序中运用的比较多,给我们的编程带来了很大的方便。
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任何对象(基本型别除外)。 一旦将对象装入容器,其型别就会丢失,当你使用的时候,必须先进行转型。