Linkeddlist是一个C#为我们封装好的类,它的本质是一个可变类型的泛型双向链表,其元素指定前面和后面的元素。
链表的优点是:如果要插入一个元素到链表的中间位置,会非常的快。原因是,如果插入,只需要修改上一个元素的Next与下一个元素的Previous的引用则可。像ArrayList列表中,如果插入,需要移动其后的所有元素。链表的缺点是,链表只能是一个接着一个的访问,这样就要用较长的时间来查找定位位于链表中间的元素。
链表对象有两个类,一个是链表本身,一个是链表节点类LinkedListNode
LinkedListNode被LinkedList类包含,用LinkedListNode类,可以获得元素的上一个与下一个元素的引用
public class LinkedList : ICollection<T>, IEnumerable<T>, ICollection, IEnumerable, ISerializable, IDeserializationCallback{ 类体。。。}
上述可知,LinkedList继承了ICollection, IEnumerable, ICollection, IEnumerable, ISerializable, IDeserializationCallback接口。
LinkedList的继承关系:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable
继承了AbstractSequentialList,本身和AbstractList没有什么区别,但是AbstractSequentialList完善了AbstractList中没有的功能,ArrayList继承之AbstractList,而AbstractSequentialList是AbstractList的子类,所以AbstractSequentialList就是对AbstractLIst中没有的功能进行完善。
其中的Cloneable和Serializable和ArrayList一样,都是标记接口,作用是标记可以复制克隆和序列化。
Deque:实现了Collection中的大家庭接口Queue队列接口。说明了它具有双端队列的功能(LinkedLIst和ArrayList的最大区别就是LinkedList实现了Deque接口,使的LinkedList具有了双端队列的功能)
简单介绍一下LinkedList类的方法与属性:
Count 返回链表中的元素个数
First 返回链表中的第一个节点,其返回的类型是一个节点类LinkedListNode,用它可以迭代集合中的其它节点
Last 返回最后一个节点
AddAfter() AddBefore() AddFirst() AddLast()
使用AddXXXX方法,可以在链表中添加元素分别是链表的头部与尾部,还有一个节点的前面与后面
Remove() RemoveFirst() RemoveLast() First与Last分别删除链表的头部元素与尾表元素 ,Remove是删除指定的一个匹配对像
Clear()清除所有的元素
Contains() 搜索一个元素,如果找到返回TRUE找不到返回FALSE
Find() 从链表头开始找一个元素,并返回他的节点类,LinkedListNode
FindLast() 与Find()类似,不同的是从尾部来搜