怎么做视频解析网站,直播间网站建设,用wordpress修改网站,怎样做游戏网站概要 LinkedList是用链表结构存储数据的#xff0c;很适合数据的动态插入和删除#xff0c;随机访问速度比较慢。另外#xff0c;他还提供了 List 接口中没有定义的方法#xff0c;专门用于操作表头和表尾元素#xff0c;可以当作堆栈、队列和双向队列使用。
链表 链表是…概要 LinkedList是用链表结构存储数据的很适合数据的动态插入和删除随机访问速度比较慢。另外他还提供了 List 接口中没有定义的方法专门用于操作表头和表尾元素可以当作堆栈、队列和双向队列使用。
链表 链表是线性表的常见实现。它由一系列节点Node组成Node是LinkedList的一个内部类有三个属性item存储数据next指向下一个节点的指针prev指向上一个节点的指针所以LinkedList是由双向链表实现的。
private static class NodeE {E item;LinkedList.NodeE next;LinkedList.NodeE prev;
}
基本操作
LinkedList提供了一系列基本操作包括添加元素、删除元素、查找元素、获取元素等。如 add(E e) 在链表末尾添加一个元素 addFirst(E e) 在链表开头添加一个元素 addLast(E e) 在链表末尾添加一个元素 remove() 删除链表的第一个元素 remove(Object o) 删除链表中指定的元素 removeFirst() 删除链表的第一个元素 removeLast() 删除链表的最后一个元素
作为栈使用 LinkedList可以作为栈使用内部提供了push()和pop()方法用于入栈和出栈还有peek()方法用于探测栈顶元素不过作为LinkedList的副业用户需自己遵守栈的规则而不像Stack那样具有强制性。那为什么不直接使用Stack呢理由是如果你已经有一个LinkedList了为什么要费力把它转成Stack呢另外Stack是一个遗留类它继承自Vector是线程安全的但是性能较低已不推荐在新代码中使用。
作为队列使用 LinkedList可以作为队列使用内部提供了offer()和poll()方法用于入队和出队与作为栈使用的理由一样也是方便开发者使用若需要创建一个队列应该使用ArrayDeque。
注意事项
LinkedList可以在任意位置高效地添加、删除元素不需要移动其他元素不用考虑扩容问题。缺点是查找元素时需要遍历效率较低。不要因为节省空间而选择LinkedListArrayList虽然数组后面可能会存在空间浪费的情况但是组成LinkedList的每个节点也有两个指针的额外开销所以不见的就比ArrayList更节省空间应该根据需求选择合适的数据结构。LinkedList不是线程同步的多线程共用需做好同步。