LinkedList--链表

特点:

  删除,增加 用LinkedList性能高  层次查找不适合   

    查询用ArrayList  数组下标查找  插入和删除慢缺点是要做移位操作

  总结:LinkedList内部封装的是双向链表数据结构,每个节点是一个Node对象,Node对象封装的是你要添加的元素,

还有一个指向上一个Node对象的应用和指向下一个Node对象的引用,

不同的容器有不同的数据结构,不同的数据结构操作起来性能不一样

  扩展了AbstractSequentialList并实现List接口

提供链表数据结构

主要实现了Deque接口  Deque接口继承了Queue接口  一个线性collection,支持在两端插入和移除元素   队列(堆栈)操作

  

//不能使用List 因为addFirst addLast  在List接口中没有
LinkedList<String> lists = new LinkedList<String>();
//不能使用List 因为addFirst addLast  在List接口中没有
LinkedList<String> lists = new LinkedList<String>();
lists.add("张三");
lists.add("李四");
lists.add("王五");
lists.addFirst("tanlei");// 头添加
lists.addLast("marry");// 尾添加
/*Iterator<String> ss = lists.iterator();
// 使用迭代器进行统一遍历
while (ss.hasNext()) {
String name = ss.next();
System.out.println(name);
}*/
/*for(Iterator<String> ss = lists.iterator();ss.hasNext();) {
String name = ss.next();
System.out.println(name);
}*/
// 增强for循环遍历
for (String name : lists) {
System.out.println(name);
}
lists.clear();
System.out.println(lists.removeFirst());//删除并返回第一个元素,容器中没有元素返回异常
System.out.println(lists.size());
System.out.println(lists.pollFirst());//容器中没有元素返回null

栈和队列的功能  

栈:后进先出(杯子)

队列:先进先出

package com.day1;

import java.util.Iterator;
import java.util.LinkedList; public class LinkedListDemo2 {
public static void main(String[] args) {
/*MyStack<String> myStack = new MyStack<String>();
myStack.push("张三");
myStack.push("李四");
myStack.push("王五");
myStack.push("周六");
myStack.pop();// 出栈一个
myStack.pop();// 出栈两个
Iterator<String> it = myStack.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}*/ MyQueue<Integer> myQueue=new MyQueue<Integer>();
myQueue.push(1);
myQueue.push(2);
myQueue.push(3);
myQueue.push(4);
myQueue.pop();
myQueue.pop();
Iterator<Integer> it = myQueue.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
} class MyStack<T> {
private LinkedList<T> data = null; public MyStack() {
data = new LinkedList<T>();
} // 压栈方法
public void push(T obj) {
data.addFirst(obj);
} // 出栈
public T pop() {
return data.removeFirst();
} public Iterator<T> iterator() { return data.iterator(); } } class MyQueue<T> {
private LinkedList<T> data = null; public MyQueue() {
data = new LinkedList<T>();
} public void push(T obj) {
data.addFirst(obj);
} public T pop() {
return data.removeLast();
} public Iterator<T> iterator() { return data.iterator(); } }

最新文章

  1. ABP教程-通过ABPboilerplate模版创建项目
  2. 父类方法返回子类实例:PHP延迟静态绑定
  3. Mac OS X:禁止崩溃报告-CrashReport
  4. c#学习 流程控制语句
  5. {POJ}{3925}{Minimal Ratio Tree}{最小生成树}
  6. 第六节:Vue过滤器的用法和自定义过滤器
  7. 用SqlParameter 给SQL传递参数
  8. 书籍推荐 《移动Web手册》 奇舞团
  9. 基于SURF特征的图像与视频拼接技术的研究和实现(一)
  10. testng相关的Annotation注释方法,
  11. 重拾java中的 i++ 和 ++i
  12. 【Unity技巧】开发技巧(技巧篇)
  13. Taro开发微信小程序之利用腾讯地图sdk标记
  14. [转] KVM storage performance and cache settings on Red Hat Enterprise Linux 6.2
  15. [AI]AI章1 框架选型
  16. 【python】bytes与字符串的相互转化
  17. AJAX是什么?
  18. VSCode保存插件配置并使用 gist 管理代码片段
  19. app接口,如何保证是由app内部调用而非外部模拟post请求调用。
  20. B站日志系统的前世今生

热门文章

  1. PAT甲级——A1017 Queueing at Bank
  2. CentOS 6.5 Apache+SVN配置
  3. Windows下shell神器
  4. 解Bug之路-记一次中间件导致的慢SQL排查过程
  5. Phone List HDU1671 字典树Trie
  6. Axure 工具的使用
  7. Hdu 4965(矩阵快速幂)
  8. 淘宝镜像(CNPM)安装
  9. Nginx负载均衡反向代理
  10. 【洛谷】 P1420 最长连号