Java ArrayList or LinkedList

Java ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。

ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

添加元素

import java.util.ArrayList;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Weibo");
        System.out.println(sites);
    }
}

访问元素

import java.util.ArrayList;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Weibo");
        System.out.println(sites.get(1));  // 访问第二个元素
    }
}

修改元素

import java.util.ArrayList;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Weibo");
        sites.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值
        System.out.println(sites);
    }
}

删除元素

import java.util.ArrayList;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Weibo");
        sites.remove(1); // 删除第二个元素
        System.out.println(sites);
    }
}

计算大小

import java.util.ArrayList;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Weibo");
        System.out.println(sites.size());
    }
}

Java ArrayList 方法

在这里插入图片描述

Java LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。

与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。
链表可分为单向链表和双向链表。

以下情况使用 ArrayList :

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

以下情况使用 LinkedList :

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

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

// 引入 LinkedList 类
import java.util.LinkedList;

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

Java LinkedList方法

在这里插入图片描述

Java ArrayList 和 LinkedList 的区别

数据结构:
ArrayList基于动态数组实现,内部维护一个数组,当数组满时会自动扩展容量。
LinkedList基于双向链表实现,每个元素都包含对前一个和后一个元素的引用。

访问元素的性能:
ArrayList在随机访问元素时性能较好,因为它可以通过索引直接访问数组中的元素。
LinkedList在随机访问时性能相对较差,因为它需要遍历链表来找到指定位置的元素。

插入和删除操作的性能:
在ArrayList中,插入和删除元素可能涉及到数组的拷贝操作,特别是在中间或开头插入/删除元素时。
LinkedList在插入和删除元素时性能较好,因为它只需要调整节点的引用,而不涉及数组的拷贝。

空间复杂度:
ArrayList在存储元素时可能会分配一定的冗余空间,因为它需要预留一些额外的空间,以应对元素的动态增长。
LinkedList的空间利用率相对较高,因为它只存储元素和节点之间的引用。

迭代性能:
ArrayList通过迭代器(Iterator)在元素之间移动的速度更快。
LinkedList通过指针在节点之间移动的速度更快。

综上所述,如果需要频繁进行随机访问或迭代操作,且对内存占用不太敏感,可以选择ArrayList。如果需要频繁进行插入、删除或在两端进行操作,并且对内存占用敏感,可以选择LinkedList。

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值