LinkedList入门教程

LinkedList是什么?

LinkedList是一种数据结构,它由节点组成,每个节点包含一个值和一个指向下一个节点的指针。这种数据结构非常适合插入和删除操作,因为它们只涉及相邻节点的更改。LinkedList常用于实现栈、队列和线性列表等数据结构。在Java中,LinkedList是一个类,实现了List接口,可用于在链表中存储和操作对象。

LinkedList

LinkedList的使用

创建对象

使用LinkedList类的语法格式如下:

import java.util.LinkedList;

LinkedList<String> list = new LinkedList<String>();

在上述代码中,我们首先通过 import 语句引入了 java.util 包中的 LinkedList 类。然后我们声明了一个名为 list 的 LinkedList 对象,这个对象可以存储字符串类型的数据。

如果需要存储其他类型的数据,只需要将 String 替换成相应的数据类型即可。例如,如果要存储整数类型的数据,代码如下:

LinkedList<Integer> list = new LinkedList<Integer>();

添加元素

下面是Java语言的示例代码,演示如何向LinkedList中添加元素

import java.util.LinkedList;

public class Example {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();

        // 添加元素
        linkedList.add("Java");
        linkedList.add("Python");
        linkedList.add("C++");

        // 输出LinkedList中所有元素
        System.out.println(linkedList);

        // 在指定位置添加元素
        linkedList.add(1, "Ruby");

        // 输出LinkedList中所有元素
        System.out.println(linkedList);
    }
}

在上面的代码示例中,首先创建了一个空的LinkedList对象,然后通过调用add()方法,向其添加了三个元素。接着调用 System.out.println(linkedList);语句,输出LinkedList中所有元素,结果为:

[Java, Python, C++]

接着调用linkedList.add(1, “Ruby”);,在LinkedList的第二个位置(索引值为1)添加了一个新的元素"Ruby"。最后再次调用System.out.println(linkedList);输出新的LinkedList中所有元素,结果为:

[Java, Ruby, Python, C++]

删除元素

可以使用LinkedList类中的remove()方法来删除元素。该方法有两种用法:

  1. remove(int index): 删除指定index位置上的元素。
  2. remove(Object obj): 删除第一个找到的obj对象。

示例代码:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
        System.out.println(list);

        // remove the element at index 1
        list.remove(1);
        System.out.println(list);

        // remove the first occurrence of "orange"
        list.remove("orange");
        System.out.println(list);
    }
}

输出:

[apple, banana, orange]
[apple, orange]
[apple]

注意:当使用remove(int index)方法时,如果给定的index超出了链表的范围,将会抛出IndexOutOfBoundsException异常。

获取长度

可以通过LinkedList的size()方法获取LinkedList的长度,如下所示:

LinkedList list = new LinkedList();
int length = list.size();

以上代码将创建一个空的LinkedList,然后使用size()方法获取该LinkedList的长度,将其存储在一个整数变量length中。

如果LinkedList已经包含一些元素,则可以直接使用size()方法获取其长度。例如:

LinkedList list = new LinkedList();
list.add("A");
list.add("B");
list.add("C");
int length = list.size();

以上代码将创建一个LinkedList,向其中添加三个字符串元素,然后使用size()方法获取该LinkedList的长度,将其存储在一个整数变量length中。

排序

Java LinkedList排序的代码示例:

import java.util.Collections;
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<>();
        list.add(4);
        list.add(2);
        list.add(8);
        list.add(5);

        Collections.sort(list); // 对LinkedList进行排序

        System.out.println(list); // 输出排序结果 [2, 4, 5, 8]
    }
}

在上述示例中,我们首先创建了一个LinkedList,并向其添加了一些Integer类型的元素。然后,我们调用Collections.sort()方法对该LinkedList进行排序,最后输出排序结果。可以看到,排序结果是升序排列的。

如果要对LinkedList进行降序排列,则可以使用Collections.reverseOrder()方法,如下所示:

import java.util.Collections;
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<>();
        list.add(4);
        list.add(2);
        list.add(8);
        list.add(5);

        Collections.sort(list, Collections.reverseOrder()); // 对LinkedList进行降序排序

        System.out.println(list); // 输出排序结果 [8, 5, 4, 2]
    }
}

在这个示例中,我们将Collections.sort()方法的第二个参数设置为Collections.reverseOrder(),以对LinkedList进行降序排列。最后输出排序结果,可以看到结果是降序排列的。

常用方法

  1. add():在链表的末尾添加一个元素。
  2. addFirst(E element): 在链表的头部添加一个元素。
  3. addLast(E element): 在链表的尾部添加一个元素。
  4. add(int index, E element): 在指定的位置插入一个元素。
  5. removeFirst(): 移除链表的第一个元素。
  6. removeLast(): 移除链表的最后一个元素。
  7. remove(int index): 移除指定位置的元素。
  8. get(int index): 获取指定位置的元素。
  9. set(int index, E element): 将指定位置的元素替换为新元素。
  10. size(): 返回链表中元素的数量
  11. clear(): 移除链表中所有的元素
  12. indexOf():返回元素第一次出现的索引位置,如果没有则返回-1。
  13. isEmpty(): 判断链表是否为空。
  14. contains():判断链表中是否包含指定元素。
  15. peek(): 获取链表的头部元素,但不会移除它。
  16. poll(): 移除链表的头部元素,并返回该元素。
  17. offer(E element): 将元素添加到链表的末尾,相当于addLast方法。
  18. iterator(): 返回一个迭代器,可以用来遍历链表中的元素。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值