java集合之LinkedList

LinkedList:位于java.util包下



1 LinkedList概述

特点:底层数据结构是链表,增删快查询慢;实现非同步,线程不安全,效率高;有序(存取顺序一致);允许存储重复值;允许存储null值;易于实现堆栈、队列、双向队列结构;

常用构造:

public LinkedList(): 空参构造,构建一个空列表。

常用方法:和ArrayList差不多,此处仅列出特有的功能方法。

1)添加功能:

public addFirst(E e) :将指定元素插入此列表的开头。

public addLast(E e) :将指定元素插入此列表的末尾。

2)获取功能

public E element(): 获取但不移除此列表的头(第一个元素)。

public E getFirst():返回此列表的第一个元素。

public E getLast():返回此列表的最后一个元素。

3)删除功能

public E removeFirst():移除并返回此列表的第一个元素。

public E removeLast():移除并返回此列表的最后一个元素。

4)还有一些栈、队列相关的功能方法。。。



LinkedList集合属于List集合中的一个子类,其使用类似ArrayList。

2 LinkedList应用

1)模拟栈结构:底层封装LinkedList集合,实现Stack栈结构

package collection.test;

import java.util.LinkedList;

public class MyStack<T> {
  private LinkedList<T> list;

  public MyStack(){
    list = new LinkedList<T>();
  }

  public boolean add(T obj){
    list.addFirst(obj);
    return true;
  }

  public Object get(){
    return list.removeFirst();
  }

  public boolean isEmpty(){
    return list.isEmpty();
  }
}

public class MyStackTest {
  public static void main(String[] args) {
    MyStack<String> stack = new MyStack<String>();
    //压栈
    stack.add("hello");
    stack.add("world");
    stack.add("java");
    //弹出栈
    while(!stack.isEmpty()){
      System.out.println(stack.get());
    }

  }
}

时间: 2024-10-10 09:16:06

java集合之LinkedList的相关文章

死磕 java集合之LinkedList源码分析

问题 (1)LinkedList只是一个List吗? (2)LinkedList还有其它什么特性吗? (3)LinkedList为啥经常拿出来跟ArrayList比较? (4)我为什么把LinkedList放在最后一章来讲? 简介 LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用,它是怎么实现的呢?让我们一起来学习吧. 继承体系 通过继承体系,我们可以看到LinkedList不仅实现了List接口,还实现了Queue和Deque接口,所以它既

java集合-LinkedList

LinkedList概念与简单实例 LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用. 1:LinkedList提供了4个不同位置的添加数据的方法,分别为链头插入,链尾插入,节点前插入,节点后插入 2:由于LinkedList是双向链表,在查询数据方面提供了"从前往后"和"从后往前"两个查询方法 3:如果数据量大,删除频繁,只能用LinkedList. 特别注意: list.get(i),LinkedList的底层是一个链表,随机

Java集合类库 LinkedList 源码解析

基于JDK 1.7,和ArrayList进行比较分析 Java已经有了ArrayList,用来存放元素,对元素的操作都很方便.为什么还会有LinkedList呢?我们都知道ArrayList获取元素很快,但是插入一个元素很慢,因为ArrayList底层维护的是一个数组,往数组中的某个位置插入一个元素,是很消耗资源的. 而LinkedList插入元素很快,获取任意位置的元素却很慢.这是为什么呢?底层又是怎样实现的呢? 1.继承关系 LinkedList的继承关系图: LinkedList继承的是A

Java 集合之LinkedList源码分析

1.介绍 链表是数据结构中一种很重要的数据结构,一个链表含有一个或者多个节点,每个节点处理保存自己的信息之外还需要保存上一个节点以及下一个节点的指针信息.通过链表的表头就可以访问整个链表的信息.Java API中提供了链表的Java实现---LinkedList下.LinkedList是通过节点的连接实现链表的数据结构,向linkedList中插入或删除元素的速度是特别快,而随机访问的速度相对较慢,这个是由于链表本身的性质造成的,在链表中,每个节点都包含了前一个节点的引用,后一个节点的引用和节点

【JAVA集合】LinkedList

以下内容基于jdk1.7.0_79源码: 什么是LinkedList List接口的链表实现,并提供了一些队列,栈,双端队列操作的方法: LinkedList补充说明 与ArrayList对比,LinkedList插入和删除操作更加高效,随机访问速度慢: 可以作为栈.队列.双端队列数据结构使用: 非同步,线程不安全: 与ArrayList.Vector一样,LinkedList的内部迭代器存在“快速失败行为”: 支持null元素.有顺序.元素可以重复: LinkedList继承的类以及实现的接口

从源码分析java集合【LinkedList】

LinkedList是一个双端链表,他继承了AbstractSequentaiList顺序列表,实现了List,Deque,Cloneable,和Serializable接口.Deque是双端队列的接口,LinkedList有记录头的 first 和 尾的 last,所以我们可以对队列的两端进行操作.它还实现了Cloneable和Serializeble接口,它们分别是实现队列进行拷贝和序列化的接口. LinkedList的节点的结构是: private static class Node<E>

Java集合四LinkedList

LinkedList简介 继承于AbstractSequentialList的双向链表,可以被当做堆栈.队列或双端队列进行操作. LinkedList本质上是一个双向链表,实现了Dequeue接口. LinkedList包含两个重要的成员:header和size. header是双向链表的表头,它是双向链表节点所对应的类Node的实例.Node中包含成员变量:prev.next.item.其中prev是该节点的上一个节点,next是该节点的下一个节点,item是该节点所包含的值. private

Java集合之LinkedList常见实例操作,实例说明

一.LinkedList常见操作 package List相关; /** * LinkedList 链接列表 * LinkedList:底层使用的链表数据结构.特点:增删速度快,查询速度稍慢: */ import java.util.Iterator; import java.util.LinkedList; class linkedlist_test { public static void main(String[] args){ LinkedList linkedlist = new Li

【Java集合】-- LinkedList源码解析

目录 继承体系 数据结构 源码解析 1.属性 2.构造方法 LinkedList() LinkedList(Collection<? extends E> c) 3.添加元素 add(E e) addFirst(E e) addLast(E e) add(int index, E element) offer(E e) offerFirst(E e) offerLast(E e) 总结 4.获取元素 get(int index) getFirst() getLast() peek() 5.删除