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(); } }

List容器-LinkedList链表的更多相关文章

  1. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  2. List容器——LinkedList及常用API,实现栈和队列

    LinkedList及常用API ①   LinkedList----链表 ②   LinkedList类扩展AbstractSequentialList并实现List接口 ③   LinkedLis ...

  3. 容器--LinkedList

    一.前言 上一篇我们介绍了List的重要实现之一ArrayList,  在大多数情况下,我们写代码时会直接使用到ArrayList,因为其在随机访问的优势是其它List无法比拟的.除了ArrayLis ...

  4. Java集合类之LinkedList链表

    package com.test; import java.util.*; public class Demo7_3 { public static void main(String[] args) ...

  5. 容器LinkedList原理(学习)

    一.概述 数据结构和ArrayList有本质不同,LinkedList 是基于链表实现,它的插入和删除操作比 ArrayList 更加高效,基于链表的,所以随机访问的效率要比 ArrayList 差. ...

  6. LinkedList -链表集合

    package cn.learn.collection; import java.util.LinkedList; import java.util.Queue; /* java.util.xxx A ...

  7. Java学习之集合(LinkedList链表集合)

    一.什么是链表集合,通过图形来看,比如33只知道它下一个是55 如果:现在要删除33的话,就是把55赋值给45,这样看它操作集合速度会非常快. 二.LinkedList特有方法 1.添加 addFir ...

  8. java LinkedList(链表)

    LinkedList也像ArrayList一样实现了基本的List接口,但是它执行某些操作(在List的中间插入和移除)时比ArrayList更高效,但在随机访问方面却要逊色一些 LinkedList ...

  9. golang数据结构和算法之LinkedList链表

    差不多自己看懂了,可以自己写测试了.:) LinkedList.go package LinkedList //"fmt" type Node struct { data int ...

随机推荐

  1. java记录CST时间类型的字符串转换问题

    下列代码可以实现把Java的CST格式的时间字符串转为为Date对象和所需要的日期时间格式! String dateStr = "Wed Sep 16 11:26:23 CST 2009&q ...

  2. 状态模式(State)(开关灯,状态实例为类,不同状态,不同行为)

    (当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类.) 在软件开发过程中,很多对象也会像水和信号灯一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将有不同 ...

  3. sqoop的数据抽取过程记录

    今天公司抽取了4千万的表大概十几G 用sqoop抽取是30--40分钟 开了两个map.模型是oracle----hdfs(hive).以前只抽过几十万级别,所以千万级别感觉还是spilt做好切分和定 ...

  4. hive作业的优化策略

    Mapreduce自身的特点: 1.IO和网络负载大:优化策略:减少IO和网络负载. 2.内存负载不大.优化策略:增大内存使用率: 3.CPU负载不大.优化策略:增大CPU使用率: (hive的优化应 ...

  5. springcloud的服务提供者与服务消费者

    1.说明 springcloud中由服务消费者调用服务提供者一共有两种方法rest和feign 2.feign (1)使用feign的方式进行服务调,搭建服务提供者. 创建一个web项目(服务提供者) ...

  6. 安装ubuntn16.04重启后出现grub secure界面

    参考:http://jingyan.baidu.com/article/c85b7a640cd7d6003bac95f8.html 安装ubuntn重启后出现grub secure界面的原因是在安装过 ...

  7. jdbc原始连接

    public class JdbcInstrt { public static void main(String[] args) { Connection conn = null; PreparedS ...

  8. jquery全部选是,全部选否。

    <div class="col-md-9"> <div class="box box-primary"> <div class=& ...

  9. ubuntu忘记root密码

    解决办法: 选择GRUB第2个选项(恢复模式) 按e进入编辑模式 将ro recovery nomodeset修改成rw single init=/bin/bash 然后再按F10进入单用户模式,进入 ...

  10. Hibernate: insert into xxx (name) values (?)但是数据库中没有数据

    学习hibernate 控制台提示 但数据库中没有任何数据被插入 同样的代码,参考例程中就有数据被插入 比较无解,删除部分代码,红框中的部分,运行一下,再贴回去,就好了