编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Java的LinkedList集合

ArrayList集合在查询元素时速度很快,但在增删元素时效率较低,为了克服这种局限性,可以使用List接口的另一个实现类LinkedList。该集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合对于元素的增删操作具有很高的效率,LinkedList集合添加元素和删除元素的过程如图所示。

LinkedList集合添加元素和删除元素的过程

图中,通过两张图描述了LinkedList集合新增元素和删除元素的过程。其中,左图为新增一个元素,图中的元素1和元素2在集合中彼此为前后关系,在它们之间新增一个元素时,只需要让元素1记住它后面的元素是新元素,让元素2记住它前面的元素为新元素就可以了。右图为删除元素,要想删除元素1与元素2之间的元素3,只需要让元素1与元素2变成前后关系就可以了。

LinkedList集合除了具备增删元素效率高的特点,还专门针对元素的增删操作定义了一些特有的方法,如表所示。

方法声明功能描述
void add(int index,E element)在此列表中指定的位置插人指定的元素
void addFirst(Objcct o)将指定元素插人此列表的开头
void addLast(Objcct o)将指定元素添加到此列表的结尾
Object gctFirst()返回此列表的第一个元素
bject getLast()返回此列表的最后一个元素
Object removeFirst()移除并返回此列表的第一个元素
Object removeLast()移除并返回此列表的最后一个元素

表中,列出的方法主要针对集合中的元素进行增加、删除和获取操作,接下来通过一个案例来学习这些方法的使用,如例所示。

import java.util.LinkedList;
public class Example {
    public static void main(String[] args) {
        LinkedList link = new LinkedList(); // 创建LinkedList 集合
        link.add("stu1");
        link.add("stu2");
        link.add("stu3");
        link.add("stu4");
        System.out.println(link.toString()); // 取出并打印该集合中的元素
        link.add(3, "Student"); // 向该集合中指定位置插入元素
        link.addFirst("First"); // 向该集合第一个位置插入元素
        System.out.println(link);
        System.out.println(link.getFirst()); // 取出该集合中第一个元素
        link.remove(3); // 移除该集合中指定位置的元素
        link.removeFirst(); // 移除该集合中第一个元素
        System.out.println(link);
    }
}

运行结果:

[stu1, stu2, stu3, stu4]
[First, stu1, stu2, stu3, Student, stu4]
First
[stu1, stu2, Student, stu4]

例中,首先在LinkedList集合中存入4个元素,然后通过add(int index,Object o)和addFirst(Object o)方法分别在集合的指定位置和第一个位置(索引0位置)插入元素,最后使用remove(intindex)和removeFirst()方法将指定位置和集合中的第一个元素移除,这样就完成了元素的增删操作。由此可见,使用LinkedList对元素进行增删操作是非常便捷的。

未经允许不得转载: 技术文章 » Java编程 » Java的LinkedList集合

专注编程入门及提高,探究程序员职业规划之道!