List容器-LinkedList链表
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链表的更多相关文章
- java集合之linkedList链表基础
LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...
- List容器——LinkedList及常用API,实现栈和队列
LinkedList及常用API ① LinkedList----链表 ② LinkedList类扩展AbstractSequentialList并实现List接口 ③ LinkedLis ...
- 容器--LinkedList
一.前言 上一篇我们介绍了List的重要实现之一ArrayList, 在大多数情况下,我们写代码时会直接使用到ArrayList,因为其在随机访问的优势是其它List无法比拟的.除了ArrayLis ...
- Java集合类之LinkedList链表
package com.test; import java.util.*; public class Demo7_3 { public static void main(String[] args) ...
- 容器LinkedList原理(学习)
一.概述 数据结构和ArrayList有本质不同,LinkedList 是基于链表实现,它的插入和删除操作比 ArrayList 更加高效,基于链表的,所以随机访问的效率要比 ArrayList 差. ...
- LinkedList -链表集合
package cn.learn.collection; import java.util.LinkedList; import java.util.Queue; /* java.util.xxx A ...
- Java学习之集合(LinkedList链表集合)
一.什么是链表集合,通过图形来看,比如33只知道它下一个是55 如果:现在要删除33的话,就是把55赋值给45,这样看它操作集合速度会非常快. 二.LinkedList特有方法 1.添加 addFir ...
- java LinkedList(链表)
LinkedList也像ArrayList一样实现了基本的List接口,但是它执行某些操作(在List的中间插入和移除)时比ArrayList更高效,但在随机访问方面却要逊色一些 LinkedList ...
- golang数据结构和算法之LinkedList链表
差不多自己看懂了,可以自己写测试了.:) LinkedList.go package LinkedList //"fmt" type Node struct { data int ...
随机推荐
- opencv读取的彩色图像,数据是GBR而不是RGB
开发久了,容易想当然 直到数据怎么也不对的时候,才想起来查一下手册 三个像素,当然没有这么大的像素,这是放大之后的 数据输出
- WCF简要介绍
什么是WCF WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架.WCF为程序员提供了丰富的功 ...
- Luogu P3459 [POI2007]MEG-Megalopolis(线段树)
P3459 [POI2007]MEG-Megalopolis 题意 题目描述 Byteotia has been eventually touched by globalisation, and so ...
- [Array]448. Find All Numbers Disappeared in an Array
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...
- 解决分页浏览后搜索无数据的问题(VUE+element-ui)
开发过程中发现了:浏览到第二页后.对数据进行查询时,后台返回的数据是空.原因是:当前页码为第二页.所以向后台发送请求的pageNumber=2,当pageNumber=1时.就可以查询到数据了. 所以 ...
- zabbix自定义监控redis
zabbix监控redis脚本 #!/bin/bash #此脚本用来获取redis-cli info信息 redis_cli="/usr/local/redis/bin/redis-cli& ...
- hql 条件查询 返回空的一种情况
为何会出现查询为空,但是查询整个表没问题的情况呢? 这里是没有分清字符串和变量 原来写的是, String hql = "from ClientInfoModel where clientI ...
- 关于python的字符串操作
字符串的判断操作: str = "fahaf asdkfja\t \r \n fjdhal 3453" print(str.isspace()) # 如果str中只包含空格,则返回 ...
- 各NoSQL数据库管理系统与模型比较
提供:ZStack云计算 内容简介 NoSQL数据库的存在意义在于提供传统关系数据库管理系统所不具备的特定功能.无论是负责承载简单的键-值对存储以实现短期缓存,抑或是处理传统数据库及结构化查询语言(简 ...
- IntelliJ IDEA中设置同时打开多个文件且分行显示
[转载]原文链接:https://blog.csdn.net/lwl20140904/article/details/73275897 有时候要是打开多个文件,要么都显示在一行,要么因为空间不足,就给 ...