快速业务通道

J2SE - 集合框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
面看看它的核心方法:add(E e):把元素插入到链表末尾,首先要实例化一个节点,新节点previous域存放链表中最后一个节点地址,next域存放链表中第一个节点地址,element域存放元素值,链表中最后一个节点的next域存放新节点的地址,第一个元素的previous域存放新节点的地址,这样这个元素就插入到该链表中去了,没有涉及到复杂的操作,所以是非常高效的。

add(int index,E element):在index位置插入元素,这就需要先查找到该位置。查到后,这里就把查到的节点的前一个节点叫为A,实例化新的节点为B,查到index的节点为C.B的next域等于A的next值(也就是C的内存地址),B的previous域等于C的previous值(也就是A的内存地址),B的element域存放元素值,然后把A的next域和C的previous域都等于B的内存地址。这样也就把元素插入到链表的index位置中去了,但涉及到了查询,所以效率虽然高,但也没有add(E e)那么高。

remove(int index):删除在index位置的元素,首先也是要找到该位置的节点。然后把该节点的下一个节点(也就是该节点next域的内存地址那个节点)的previous值等于该节点的previous值,该节点的上一个节点(也就是该节点previous域的内存地址那个节点)的next值等于该节点的next值。这样就把该节点从这条链表删除了,过程中虽然涉及到了查找,但没有涉及到像ArrayList类中的remove方法要移动表中元素,所以该方法的效率还是很高的。

remove(Object o):删除在链表中第一个元素为o的节点,也是需要查找到该节点,然后就跟remove(int index)思路一样把元素删除,所以效率也是很高的。

set(int index,E element):把在链表中第index个元素值改为element,这也需要找到该节点来修改元素值,但涉及到了查找节点,ArrayList中的set方法就不用查找就可以修改,所以相对于ArrayList中的set方法,LinkedList方法set方法效率就没那么高了。

get(int index):获取第index位置的元素值,也是要找到该节点,所以就也没ArrayList中的get方法那么高效率了,因为该方法需要查找链表。

indexOf(Object o):获取该链表中第一o元素的位置,也是要查找链表,但ArrayList中的indexOf方法也是需要查找的,所以这两个类的indexOf的效率都差不多。

所以,在编程中,如果要进行大量的随机访问,就使用ArrayList;如果要经常从表中插入或删除元素的就应该使用LinkedList.

J2SE - 集合框架(2)

时间:2010-12-17

Set:继承自Collection接口,表示无序的,无重复元素的集合。Set中最常使用的是测试归属性,可以很容易测试某个对象是否在某个Set中。所以,查找就成为了Set中最重要的操作,因此通常会选择一个HashSet的实现查找,因为有比较复杂的哈希表支持,它专门对快速查找进行了优化。

迭代器:迭代器是一种设计模式,在这里是一个对象,它的作用就是遍历并选择列表和操作列表中的对象。迭代器的创佳的代价小,所以通常被称为轻量级对象。迭代器统一了对各种容器的访问方式,很方便。Java中的迭代器有两种,一种是Iterator,另一种是继承了Iterator只能用于各种List访问的ListIterator. Iterator:只能用于单向移动,方法有:iterator()要求容器返回一个Iterator,Iterator将准备好返回序列的第一元素。next()获得列表中的下一个元素。hasNext()检查列表中是否还有元素。remove()将迭代器新近返回的元素删除。

ListIterator:只能用于各种的List类的访问,但能用于双向的移动,有一个hasPrevious()检查时候有前一个元素的,这种操作很像数据库的游标。

import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.LinkedLi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号