Java List实战:手把手教你玩转ArrayList和LinkedList

简介: 【6月更文挑战第17天】在Java中,ArrayList和LinkedList是List接口的实现,分别基于动态数组和双向链表。ArrayList适合索引访问,提供快速读取,而LinkedList擅长插入和删除操作。通过示例展示了两者的基本用法,如添加、访问、修改和删除元素。根据场景选择合适的实现能优化性能。

在Java的编程世界中,List作为一种常见的数据结构,广泛应用于各种场景。其中,ArrayList和LinkedList作为List接口的两个主要实现类,各有特色,使用场景也各不相同。今天,我们就来手把手地教你如何玩转这两个强大的工具。

一、ArrayList:动态数组的魔力

ArrayList,顾名思义,是一个可以动态调整大小的数组。它的内部实现基于数组,因此具有数组的特性,比如支持通过索引快速访问元素。同时,它又可以像链表一样动态地增加或减少元素,无需预先分配固定的空间。

示例代码:

java
import java.util.ArrayList;

public class ArrayListDemo {
public static void main(String[] args) {
// 创建一个ArrayList
ArrayList arrayList = new ArrayList<>();

    // 添加元素  
    arrayList.add("元素1");  
    arrayList.add("元素2");  

    // 访问元素  
    System.out.println(arrayList.get(0)); // 输出:元素1  

    // 遍历元素  
    for (String item : arrayList) {  
        System.out.println(item);  
    }  

    // 修改元素  
    arrayList.set(0, "修改后的元素1");  

    // 删除元素  
    arrayList.remove("元素2");  

    // 再次遍历元素  
    for (String item : arrayList) {  
        System.out.println(item);  
    }  
}  

}
实战技巧:

当需要频繁地通过索引访问元素时,ArrayList是首选。
如果能预知元素的大致数量,可以在创建ArrayList时指定初始容量,以减少扩容带来的性能开销。
二、LinkedList:双向链表的魅力

LinkedList是一个基于双向链表的List实现。与ArrayList不同,LinkedList在添加和删除元素时具有更高的效率,因为只需要改变相邻节点的引用关系即可。但是,LinkedList在随机访问元素时性能较差,因为它需要从头或尾开始遍历。

示例代码:

java
import java.util.LinkedList;

public class LinkedListDemo {
public static void main(String[] args) {
// 创建一个LinkedList
LinkedList linkedList = new LinkedList<>();

    // 添加元素  
    linkedList.add("元素A");  
    linkedList.addFirst("元素B"); // 在开头添加  
    linkedList.addLast("元素C");  // 在结尾添加  

    // 访问元素  
    System.out.println(linkedList.getFirst()); // 输出:元素B  

    // 遍历元素  
    for (String item : linkedList) {  
        System.out.println(item);  
    }  

    // 删除元素  
    linkedList.removeFirst(); // 删除开头元素  

    // 再次遍历元素  
    for (String item : linkedList) {  
        System.out.println(item);  
    }  
}  

}
实战技巧:

当需要在列表的开头或结尾频繁地添加或删除元素时,LinkedList是更好的选择。
由于LinkedList不支持通过索引直接访问元素,因此在需要频繁随机访问元素的场景下,ArrayList可能更加合适。
通过本文的实战指导,相信你已经对ArrayList和LinkedList有了更深入的了解。在实际开发中,你可以根据具体需求选择适合的List实现类,以提高程序的性能和效率。

相关文章
|
1天前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
7 1
|
1天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
1天前
|
Java
JAVA构建List集合为树形结构的方法和代码
JAVA构建List集合为树形结构的方法和代码
|
2天前
|
Java
java操作list使用Stream
java操作list使用Stream
4 0
|
14天前
|
存储 Java 测试技术
滚雪球学Java(57):解密Java中List接口底层实现原理
【6月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
24 2
滚雪球学Java(57):解密Java中List接口底层实现原理
|
6天前
|
存储 安全 Java
Java List详解
Java List详解
|
7天前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
12 3
|
9天前
|
安全 Java 索引
Java List:从入门到精通,一篇文章就够了!
【6月更文挑战第17天】Java List是有序元素集合,支持索引访问、添加、删除和修改。从ArrayList、LinkedList到Vector,各种实现满足不同场景需求。使用add()添加元素,get()获取,set()修改,remove()删除。遍历可用for-each或Iterator,subList()创建子集。注意线程安全,可选synchronizedList()、Vector或CopyOnWriteArrayList。理解List的基本操作和特性,能提升编程效率。
|
9天前
|
存储 Java 索引
告别Java集合小白!一文读懂List的精髓
【6月更文挑战第17天】Java中的List接口作为有序集合,允许存储和操作有序元素,支持重复值。ArrayList和LinkedList是常见实现类:ArrayList基于数组,适合快速访问但插入删除慢;LinkedList基于链表,插入删除快但访问慢。了解其核心概念、方法及泛型使用,能提升编程效率和代码质量。示例代码展示了添加和访问元素。通过深入学习,可以更好地掌握List的高级用法。
|
15天前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。