Java 集合框架LinkedList

原文:https://www.studytonight.com/java/linkedlist-in-collection-framework.php

Java LinkedList 类提供了LinkedList数据结构的实现。它使用双向LinkedList来存储元素。它实现了 List、dequeue 和 Queue 接口,并扩展了 AbstractSequentialList 类。下面是 LinkedList 类的声明。

LinkedList类声明

public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
  1. LinkedList 类扩展了 AbstractSequentialList,实现了 List、dequeue 和 Queue 接口。
  2. 它可以用作列表、栈或队列,因为它实现了所有相关的接口。
  3. 它允许空输入。
  4. 它本质上是动态的,即在需要时分配内存。因此,可以容易地实现插入和删除操作。
  5. 它可以包含重复的元素,并且不同步。
  6. LinkedList中反向 t 遍历是困难的。
  7. LinkedList中,操作很快,因为不需要发生移位。

LinkedList构造器

LinkedList 类有两个构造器。第一个用于创建空LinkedList,第二个用于从现有集合创建。

  LinkedList() // It creates an empty LinkedList
LinkedList( Collection c) // It creates a LinkedList that is initialized with elements of the Collection c

LinkedList类示例

让我们举一个例子来创建一个LinkedList,没有元素被插入,所以它创建了一个空的LinkedList。见下面的例子。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    // Displaying LinkedLIst
    System.out.println(linkedList);
  }
}

[]

LinkedList方法

下表包含LinkedList的方法。我们可以用它们来操纵它的元素。

| 方法 | 描述 | | boolean add(E) | 它将指定的元素追加到列表的末尾。 | | 无效添加(整数索引,E 元素) | 它在列表中的指定位置索引处插入指定元素。 | | 布尔地址(集合 extends E> c) | 它将指定集合中的所有元素追加到该列表的末尾。 | | 布尔地址(集合 extends E> c) | 它按照指定集合的迭代器返回的顺序,将指定集合中的所有元素追加到该列表的末尾。 | | 布尔地址(整数索引,集合 extends E> c) | 它从列表的指定位置开始,追加指定集合中的所有元素。 | | 见 addFirst(E) | 它在列表的开头插入给定的元素。 | | 请参阅 addLast | 它将给定的元素追加到列表的末尾。 | | 清空() | 它从列表中移除所有元素。 | | 对象克隆() | 它返回一个ArrayList的浅拷贝。 | | 布尔包含(对象 0) | 如果列表包含指定的元素,则返回 true。 | | 迭代器下降器() | 它以相反的顺序返回一个元素的迭代器。 | | e 元素() | 它检索列表的第一个元素。 | | E get(整数索引) | 它返回列表中指定位置的元素。 | | 和 getFirst() | 它返回列表中的第一个元素。 | | 和 getlast() | 它返回列表中的最后一个元素。 | | int indexOf(Object o) | 它返回指定元素第一次出现的列表中的索引,如果列表不包含任何元素,则返回-1。 | | int lastIndexOf(Object o) | 它用于返回指定元素最后一次出现的列表中的索引,如果列表不包含任何元素,则返回-1。 | | 列表迭代器列表迭代器(整数索引) | 它以适当的顺序返回元素的列表迭代器,从列表中的指定位置开始。 | | 布尔报价 | 它添加指定的元素作为列表的最后一个元素。 | | boolean offerfirst(和 e) | 它在列表的前面插入指定的元素。 | | boolean offerlast(和 e) | 它在列表的末尾插入指定的元素。 | | E peek() | 它检索列表的第一个元素 | | E peekFirst() | 它检索列表的第一个元素,如果列表为空,则返回 null。 | | E peekLast() | 它检索列表的最后一个元素,如果列表为空,则返回 null。 | | 电子投票() | 它检索并移除列表的第一个元素。 | | 第一次民意测验 | 它检索并移除列表的第一个元素,如果列表为空,则返回 null。 | | 和 pollLast() | 它检索并移除列表的最后一个元素,如果列表为空,则返回 null。 | | 和 pop() | 它从由列表表示的栈中弹出一个元素。 | | 空推 | 它将一个元素推到由列表表示的栈上。 | | e 移除() | 它用于检索和移除列表的第一个元素。 | | e 移除(整数索引) | 它用于移除列表中指定位置的元素。 | | 布尔删除(对象 0) | 它用于移除列表中指定元素的第一个匹配项。 | | 和 removeFirst() | 它从列表中移除并返回第一个元素。 | | 布尔删除第一次出现(对象 o) | 它删除列表中指定元素的第一次出现(从头到尾遍历列表时)。 | | 和 removeLast() | 它从列表中移除并返回最后一个元素。 | | 布尔删除最后一次出现(对象 0) | 它删除列表中指定元素的最后一次出现(从头到尾遍历列表时)。 | | 集合(整数索引,元素) | 它用指定的元素替换列表中指定位置的元素。 | | int 大小() | 它返回列表中元素的数量。 |

LinkedList添加元素

要将元素添加到LinkedList中,我们使用add()方法。它按照插入顺序将元素添加到列表中。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    linkedList.add("Delhi");
    linkedList.add("NewYork");
    linkedList.add("Moscow");
    linkedList.add("Dubai");
    // Displaying LinkedList
    System.out.println(linkedList);
  }
}

[德里、纽约、莫斯科、迪拜]

移除元素

为了从列表中移除元素,我们使用移除指定元素的移除方法。我们还可以传递索引值来移除其中的元素。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    linkedList.add("Delhi");
    linkedList.add("NewYork");
    linkedList.add("Moscow");
    linkedList.add("Dubai");
    // Displaying LinkedList
    System.out.println(linkedList);
    // Removing Elements
    linkedList.remove("Moscow");
    System.out.println("After Deleting Elements: \n"+linkedList);
    // Removing Second Element
    linkedList.remove(1);
    System.out.println("After Deleting Elements: \n"+linkedList);
  }
}

[德里、纽约、莫斯科、迪拜]删除元素后:[德里、纽约、迪拜]删除元素后:[德里、迪拜]

遍历LinkedList的元素

由于 LinkedList 是一个集合,因此我们可以使用循环来迭代它的元素。在这个例子中,我们正在遍历元素。见下面的例子。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    linkedList.add("Delhi");
    linkedList.add("NewYork");
    linkedList.add("Moscow");
    linkedList.add("Dubai");
    // Traversing ArrayList
    for(String element : linkedList) {
      System.out.println(element);    
    }
  }
}

德里纽约莫斯科迪拜

获取LinkedList的大小

有时我们想知道一个LinkedList包含的元素数量。在这种情况下,我们使用size()然后返回LinkedList的大小,它等于列表中存在的元素数量。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    linkedList.add("Delhi");
    linkedList.add("NewYork");
    linkedList.add("Moscow");
    linkedList.add("Dubai");
    // Traversing ArrayList
    for(String element : linkedList) {
      System.out.println(element);    
    }
System.out.println("Total Elements: "+linkedList.size());
  }
}

德里纽约莫斯科迪拜总要素:4

排序LinkedList元素

为了对LinkedList的元素进行排序,Java 提供了一个类 Collections,它包括一个静态排序方法()。在这个例子中,我们使用排序方法对元素进行排序。

  import java.util.*;
class Demo
{
  public static void main(String[] args)
  {
    // Creating LinkedList
    LinkedList< String> linkedList = new LinkedList< String>();
    linkedList.add("Delhi");
    linkedList.add("NewYork");
    linkedList.add("Moscow");
    linkedList.add("Dubai");
    // Sorting elements
    Collections.sort(linkedList);
    // Traversing ArrayList
    for(String element : linkedList) {
      System.out.println(element);    
    }
  }
}

德里迪拜莫斯科纽约