ITPub博客

首页 > 架构设计 > 软件结构 > 三十二、java版 SpringCloud分布式微服务云架构之Java LinkedList

三十二、java版 SpringCloud分布式微服务云架构之Java LinkedList

原创 软件结构 作者:JIAN2 时间:2021-10-21 14:48:11 0 删除 编辑

 

Java LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。需要框架源码的朋友可以看我个人简介联系我,推荐分布式架构

 链表可分为单向链表和双向链表。

一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。

一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。

Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。

与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

LinkedList 继承了 AbstractSequentialList 类。

LinkedList 实现了 Queue 接口,可作为队列使用。

LinkedList 实现了 List 接口,可进行列表的相关操作。

LinkedList 实现了 Deque 接口,可作为队列使用。

LinkedList 实现了 Cloneable 接口,可实现克隆。

LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。

LinkedList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

// 引入 LinkedList 类
import java.util.LinkedList; 
LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

创建一个简单的链表实例:

// 引入 LinkedList 类

实例

import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);
    }
}

以上实例,执行输出结果为:

[Google, minglisoft, Taobao, Weibo]

更多的情况下我们使用 ArrayList 访问列表中的随机元素更加高效,但以下几种情况 LinkedList 提供了更高效的方法。

在列表开头添加元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public classminglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        // 使用 addFirst() 在头部添加元素
        sites.addFirst("Wiki");
        System.out.println(sites);
    }
}

以上实例,执行输出结果为:

[Wiki, Google,minglisoft, Taobao]

在列表结尾添加元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        // 使用 addLast() 在尾部添加元素
        sites.addLast("Wiki");
        System.out.println(sites);
    }
}

以上实例,执行输出结果为:

[Google, minglisoft, Taobao, Wiki]

在列表开头移除元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 removeFirst() 移除头部元素
        sites.removeFirst();
        System.out.println(sites);
    }
}

以上实例,执行输出结果为:

[minglisoft, Taobao, Weibo]

在列表结尾移除元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 removeLast() 移除尾部元素
        sites.removeLast();
        System.out.println(sites);
    }
}

以上实例,执行输出结果为:

[Google, minglisoft, Taobao]

获取列表开头的元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 getFirst() 获取头部元素
        System.out.println(sites.getFirst());
    }
}

以上实例,执行输出结果为:

Google

获取列表结尾的元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 getLast() 获取尾部元素
        System.out.println(sites.getLast());
    }
}

以上实例,执行输出结果为:

Weibo

迭代元素

我们可以使用 for 配合 size() 方法来迭代列表中的元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        for (int size = sites.size(), i = 0; i < size; i++) {
            System.out.println(sites.get(i));
        }
    }
}

size() 方法用于计算链表的大小。

以上实例,执行输出结果为:

Google
minglisoft
Taobao
Weibo

也可以使用 for-each 来迭代元素:

实例

// 引入 LinkedList 类
import java.util.LinkedList;
public class minglisoftTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("minglisoft");
        sites.add("Taobao");
        sites.add("Weibo");
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

以上实例,执行输出结果为:

Google
minglisoft
Taobao
Weibo

常用方法


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70006413/viewspace-2838565/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
华为资深架构师,曾参与华为数据中心迁移解决方案!有需要了解分布式微服务电商源码的朋友可以+我 v ❤: 445909108 , 10余年互联网研发行业经验!博客里面是个人的一点技术总结,希望能够帮助到更多的IT朋友成长!

注册时间:2021-09-06

  • 博文量
    469
  • 访问量
    145435