Java LinkedList 是列表和 Deque 接口的实现,它是常用的列表实现类之一,它扩展了 AbstractSequentialList 并实现了列表和 Deque 接口,它是一个有序的集合,支持重复元素,它以插入顺序存储元素,它支持添加 null 元素,它支持基于索引的操作,如果你想了解更多关于列表的基础知识,请浏览此帖子: Java 列表。
短篇文章 内容表
在本文中,我们将讨论以下概念。
- Java LinkedList
- Java LinkedList Class Diagram
- Java LinkedList List Methods
- Java LinkedList Deque Methods
- Java LinkedList Basic Example
- Java LinkedList Generics
- Java Array to LinkedList
- Java LinkedList To Array
- Java LinkedList Real-time Usecases
- Java LinkedList 内部代表性* Java LinkedList *如何插入Java LinkedList? 如何删除Java
Java 链接
在本节中,我们将讨论有关Java LinkedList的一些重要问题:
- 联合国 Java 已链接 List class 是Java收藏框架的成员. (_ ( )* 它是执行清单和Deque接口。 () ( )* 内部是使用 Doubly 链接列表数据结构执行的 () ( )* 它支持重复元素. () ( )* 它以插入顺序存储或维护其元素. () ( )* 我们可以添加任意数量的无效元素. (_ ( )* 它不是同步的,这意味着它不是安全线( ) ( )* 我们可以使用 Collections. s同步List () 方法创建同步链接列表. () ( )* 在Java应用中,我们可以将其作为列表,堆栈或队列使用. (_ ( )* 它不执行 RandomAccess 接口 。 所以我们只能按顺序访问元素. 它不支持随机访问元素. (_ ( )* 当我们试图从 LinkedList 中访问元素时, 搜索该元素从 LinkedList 的开始或结束开始, 基于该元素的可用位置 。 () ( )* 我们可以使用 ListIterator 来迁移 LinkedList 元素 。 () ( )* 从Java SE 8上行,我们可以将一个LinkedList转换为Stream和逆行. (_ ( )* 爪哇 SE 9将增加几种工厂方法来创建一个无法移动的链接列表(_). (英语)
Java 链接列表类图
As we know, Java LinkedList is one the List implementation class. It also implements Deque. As shown in class diagram below, it does NOT extends directly from AbstractList class. It extends AbstractSequentialList class.
Java 链接列表方法
在本节中,我们将讨论一些有用的和常用的JavaLinkedList方法,以下方法是从列表或收藏界面继承的:
- int 大小 (): 获取列表中的元素数 。 (_)
- 布尔为 Empty (): 检查列表是否为空 () )3. 布尔包含(对象o): 如果此列表包含指定的元素, 返回真实性 。 () (英语). 4. 迭接器 : 以适当的顺序返回此列表中的元素的浏览器 。 5。 对象[]到箭头 (): 以适当的顺序返回包含此列表中所有元素的数组( ) )6. 布尔加法(E): 将指定元素添加到此列表的末尾 。 ()
- 布尔去除( 对象 o) : 从此列表中删除指定的元素的首次出现 。 () )8. 布尔保留 All( 缩写 c) : 只保留此列表中包含在指定收藏中的元素 。 () )9. 空白清空 (: 删除列表中的所有元素( _)
- E get( 插入索引) : 返回列表中指定位置的元素 。 () )11 (英语). E set( 索引, E 元素): 将列表中指定位置的元素替换为指定元素. () ) 12. 列表标识符列表标识符(: 返回列表对列表中元素的浏览器 。 (_) )13 (英语). 列出子列表( 从 Index, 从 int to Index) : 返回从 Index(包含)到toIndex(独家)之间指定部分的视图。 返回的列表由这个列表支持,所以返回列表中的非结构变化在本列表中反映,反之亦然. ( (英语)
Java 链接列表 Deque 方法
以下方法是特定于从 Deque 接口继承的 LinkedList 类:
- 空加一(英): 在此列表开头插入指定的元素 。 () )2. 空加Last( E) : 在本列表末尾插入指定的元素. 3。 E get First( ): 获取,但不删除, 本列表的第一个元素 。 此方法与偷看不同 首先,如果列表为空,它会丢出一个例外 。 ()
- E get Last (): (中文(简体) ). 获取,但不去除,此列表的最后一个元素. 这种方法不同于偷看 Last , 只有在此列表为空时会丢出例外 。 (_) (英语). 5. E remvoe First (): (英语). 从此列表中删除并返回第一个元素.
- E 删除 Last (): 删除并返回此列表的最后一个元素 。 (_)
- 布尔出价First(E): 在此列表前插入指定的元素 。 () () 8. 布尔出价 Last( E) : 在此列表末尾插入指定的元素 。 () (英语). 9. E 民意调查First( ): 获取并删除此列表的第一个元素, 或者如果此列表为空则返回为无效 。 (_)
- E 民意调查 Last(: 获取并删除此列表的最后一个元素, 或者如果此列表为空则返回为无效 。 () )11 (英语). E 偷看First (): 获取但不删除此列表的第一个元素, 或者如果此列表为空则返回为无效 。 () ) 12. E 偷看 Last( ): 获取,但不删除此列表的最后一个元素, 或者如果此列表为空则返回为无效 。 (_) (英语)
Java 链接列表基本示例
在本节中,我们将讨论Java LinkedList的基本示例,在接下来的节中我们将探讨一些更有用的操作。
1import java.util.LinkedList;
2import java.util.List;
3
4public class LinkedListDemo
5{
6 public static void main(String[] args)
7 {
8 List names = new LinkedList();
9 names.add("Rams");
10 names.add("Posa");
11 names.add("Chinni");
12 names.add(2011);
13
14 System.out.println("LinkedList content: " + names);
15 System.out.println("LinkedList size: " + names.size());
16 }
17}
Output:-
1LinkedList content: [Rams, Posa, Chinni, 2011]
2LinkedList size: 4
在这里,我们创建了一个LinkedList对象,并添加了4个项目。正如我们讨论的LinkedList.size()方法,用于获取列表中的元素数量。 NOTE:- 没有使用通用元素,JavaLinkList支持异性元素。
Java 链接列表
在本节中,我们将讨论如何在Java LinkedList中使用Generics。正如我们所知道的,Java Generics有助于编写 Type Safety编程,并在编译时进行更强的类型检查。
1import java.util.LinkedList;
2import java.util.List;
3
4public class LinkedListGenericsDemo
5{
6 public static void main(String[] args)
7 {
8 List<String> names = new LinkedList<>();
9 names.add("Rams");
10 names.add("Posa");
11 names.add("Chinni");
12 // We cannot add other than Strings
13 // names.add(2011);
14
15 System.out.println("LinkedList content: " + names);
16 System.out.println("LinkedList size: " + names.size());
17 }
18}
Output:-
1LinkedList content: [Rams, Posa, Chinni]
2LinkedList size: 3
在这里,我们用 Generics 创建了一个LinkedList对象,并添加了 3 个项目. 当我们尝试为LinkedList添加一个数字时,它会引发编译时间错误。
Java Array 到 LinkedIn 列表
在本节中,我们将探索如何将Java Array转换为LinkedList对象,我们可以以多种方式做到这一点,但我这里只提供了一种方法。
1import java.util.LinkedList;
2import java.util.List;
3
4public class JavaArrayToLinkedListDemo
5{
6 public static void main(String[] args)
7 {
8 Integer[] numbers = {1,2,3,4,5};
9 List<Integer> numbersList = new LinkedList<>();
10 for(Integer s : numbers){
11 numbersList.add(s);
12 }
13 System.out.println(numbersList);
14 }
15}
Output:-
1[1, 2, 3, 4, 5]
Java 链接到 Array
在本节中,我们将探讨如何将JavaLinkedList转换为Array,我们可以以多种方式做到这一点,但我这里只给出了一个方法。
1import java.util.Arrays;
2import java.util.LinkedList;
3import java.util.List;
4
5public class LinkedListToJavaArrayDemo
6{
7 public static void main(String[] args)
8 {
9 List<Integer> numbersList = new LinkedList<>();
10 numbersList.add(1);
11 numbersList.add(2);
12 numbersList.add(3);
13 numbersList.add(4);
14 numbersList.add(5);
15 Integer[] numbers = new Integer[numbersList.size()];
16
17 numbers = numbersList.toArray(numbers);
18 System.out.println(Arrays.toString(numbers));
19
20 }
21}
Output:-
1[1, 2, 3, 4, 5]
Java LinkedIn 实时使用
在本节中,我们将讨论在Java应用中使用LinkedList的最佳情况和最坏情况。
- 当我们经常使用的操作是添加或删除列表中间的元素时,LinkedList是最佳的类
为什么? 因为我们不需要做更多的切换来添加或删除列表中间的元素. 请参阅Java LinkedList中的插入如何工作?
部分以详细了解它。
- 当我们经常使用的操作是从列表中获取元素时,LinkedList是最差的选择。
为什么? 由于LinkedList仅支持连续访问,所以不支持随机访问. 请参阅Java LinkedList中的删除如何工作?
部分以详细了解它。
Java链接列表的内部代表性
As we know, internally Java LinkedList is implemented using Doubly Linked List. So Java LinkedList represents it's elements as Nodes. Each Node is divided into 3 portions as shown below. Here each Node is used for a specific purpose.
左侧节点部分用于指向LinkedList中的前一个节点(或元素)。 _)2.右侧节点部分用于指向LinkedList中的下一个节点(或元素)。
NOTE:- In JVM, LinkedList does NOT store it's elements in consecutive order. It stores it's elements at any available space and they are connected each other using Left and Right side Node portions as shown in the below diagram.
如何在JavaLinkedList中使用Insertion?
在上一节中,我们已经看到LinkedList如何将其元素存储为节点,在本节中,我们将讨论JavaLinkedList的Insertion操作如何在内部工作。
假设我们的初始LinkedList有以下数据
3. Perform the following Insertion operation on this LinkedList
1linkedList.add(2,54);
Here we are trying to perform Insertion operation to add new element with value "54" at index 2.5. Updated LinkedList looks like below.
如何在JavaLinkedList中删除?
在上一节中,我们已经看到LinkedList如何在内部执行插入操作,在本节中,我们将讨论JavaLinkedList的删除操作是如何在内部工作的。
假设我们的初始LinkedList有以下数据
3. Perform the following Insertion operation on this LinkedList
1linkedList.remove(3);
Here we are trying to perform Deletion operation to delete an element which is available at index 3.5. Updated LinkedList looks like below.
Java 链接列表 Deque 操作
在这里,我们将探讨LinkedList对象是如何作为一个Deque工作的。我们使用这些操作来实现队列或队列。我们将在我即将发布的帖子中深入讨论一支队列或队列是如何工作的。
1import java.util.LinkedList;
2import java.util.LinkedList;
3import java.util.Deque;
4
5public class LinkedListDequeOperationsDemo
6{
7 public static void main(String[] args)
8 {
9 Deque names = new LinkedList();
10 names.add(2);
11 names.addFirst(1);
12 names.addLast(3);
13 names.addFirst(0);
14 names.addLast(4);
15
16 System.out.println("LinkedList content: " + names);
17 System.out.println("LinkedList size: " + names.size());
18 names.removeFirst();
19 names.removeLast();
20
21 System.out.println("LinkedList content: " + names);
22 System.out.println("LinkedList size: " + names.size());
23 }
24}
Output:-
1LinkedList content: [0, 1, 2, 3, 4]
2LinkedList size: 5
3LinkedList content: [1, 2, 3]
4LinkedList size: 3
Java SE 8: Java 链接列表到流
在这里,我们将探索如何将LinkedList对象转换为Java SE 8流概念。
1import java.util.LinkedList;
2import java.util.List;
3
4public class LinkedListToStreamDemo
5{
6 public static void main(String[] args)
7 {
8 List<Integer> numbersList = new LinkedList<>();
9 numbersList.add(1);
10 numbersList.add(2);
11 numbersList.add(3);
12 numbersList.add(4);
13 numbersList.add(5);
14
15 //convert List to stream
16 numbersList.stream().forEach(System.out::println);
17 }
18}
Output:-
11
22
33
44
55
Java SE 9 链接列表
在Java SE 9中,Oracle Corp将添加一些有用的实用方法来创建不可变列表。如果你想用一些有用的例子深入了解它们,请浏览我的帖子: Java SE 9: Factory Methods for Immutable List这都是Java中的LinkedList快速回合。我希望这些JavaLinkedList例子能帮助你开始使用LinkedList编程。