java的数据结构相关的类实现原理

java的数据结构相关的类实现原理

ID:20427888

大小:107.00 KB

页数:9页

时间:2018-10-12

java的数据结构相关的类实现原理_第1页
java的数据结构相关的类实现原理_第2页
java的数据结构相关的类实现原理_第3页
java的数据结构相关的类实现原理_第4页
java的数据结构相关的类实现原理_第5页
资源描述:

《java的数据结构相关的类实现原理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java的数据结构相关的类实现原理List接口List是有序的Collection,使用此接口能够精确的控制每个元素插入的位拽。用户能够使用索引(元素在List中的位罝,类似于数组下标)來访问List中的元素,这类似于java的数组。和下面要提到的Set不同,List允许冇相同的元索。除了具有Collection接口必备的iterator()方法外,List述提供"*个listlterator()方法,返回•个Listlterator技U,和标准的Iterator接口相比,Listlterator多了一些addO之类的方法,

2、允许添加,刪除,设定元索,还能向前或向后遍历。实现List接I1的讲川类有LinkedList,ArrayList,Vector和Stack。LinkedListList接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List接口外,LinkedList类还为在列表的开头及结足get、remove和insert元索提供了统■•的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现Deque接口,力add、poll提供先进先出队列操作,以及其他堆栈和双端队列操作。所有操作都足

3、按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从蒎近指定索引的一端)。注意,此实现不是同步的。如果多个线程同时访问-个链接列表,而其中至少-个线程从结构上修改了该列表,则它必须保持外部同步。(结构修改指添加或删除•个或多个元索的饪何操作:仅设置元索的伉不足结构修改。)这一般通过对0然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使川Collections.synchronizedList方法來“包装”该列表。最好在创建时完成这一操作,以防止对列表进行意外的不同步访问,如下所示:L

4、istlist=Collections.synchronizedList(newLinkedList(...));此类的iterator和listlterator方法返回的迭代器是快速失败的:在迭代器创述之后,如果从结构上对列表进行修改,除非通过逃代器自身的remove或add方法,其他任何时间任何方式的修改,迭代器都将抛岀ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不贸将來不确定的时间任意发生不确定行为的风险。注意,迭代器的快速失败行为不能符到保证,一般來

5、说,存在不同步的并发修改吋,不可能作出任何硬性保证。快速失败迭代器尽最大努力抛出ConcurrentModificationException。因此,编写依赖于此异常的程序的方式足错误的,正确做法是:迭代器的快述失败行为应该仅川于检测程序错误。ArrayListArrayList是List接口的可变数组的实现。实现丫所省可选列表操作,并允许包括null在内的所存元素。除了实现List接U外,此类还提供一些方法来操作内部川来存储列表的数组的大小。每个ArrayList实例都有一个容最,该容最是指用来存储列衣元索的数组的大小。它

6、总是至少等于列表的大小。随右向ArrayList屮不断添加元索,其容量也自动增长。自动增长会带來数裾向新数组的巫新拷W,闵此,如果可预知数裾蛍的多少,可在构造ArrayList吋指定其荇堂。在添加大蛍元素前,应川程序也可以使用ensureCapacity操作來堦加ArrayList实例的界贷,这可以减少递增式再分配的数贷。注意,此实现不是同步的。如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。HashMapHashMap足基于哈希农的Map接口的非冋步实现。此实现

7、提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序悄久不变。HashMap也不例外。HashMap实际上是一个“節衣的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链农的结合体。HashMap底层就是一个数组结构,数组中的每项又是一个链表。当新建一个HashMap的吋候,就会初始化一个数组。当我们往HashMap中put元索的吋候,先根据key的hashCode里新计算hash值,根据hash值得到这个7C索在数组屮的位置(即下U),如果数组该位罝上已经存放冇其他元

8、索了,那么在这个位置上的元岽将以链表的形式存放,新加入的放在链头,敁先加入的放在链足。如來数组该位罝t没有元索,就直接将该元索放到此数组中的该位罝卜.。当系统决定存储HashMap屮的key-value对时,完全没冇考虑Entry中的value,仅仅只是根据key来计筇并决定每个Entry

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。