Java LinkedList getFirst() 方法
getFirst()
是 Java 中 LinkedList
类提供的一个方法,用于获取链表中的第一个元素。这个方法属于 java.util.LinkedList
类,是操作链表数据结构的基本方法之一。
方法声明
public E getFirst()
返回值
返回链表的第一个元素(头元素)
方法详解
功能说明
getFirst()
方法用于检索但不移除链表的第一个元素(头元素)。这个方法与 peekFirst()
方法功能相同,但在链表为空时的行为不同。
时间复杂度
O(1) - 因为 LinkedList 内部维护了对头节点的引用,所以可以直接访问使用示例
基本用法
实例
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
// 创建一个 LinkedList
LinkedList<String> fruits = new LinkedList<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// 使用 getFirst() 获取第一个元素
String firstFruit = fruits.getFirst();
System.out.println("第一个水果是: " + firstFruit); // 输出: 第一个水果是: Apple
}
}
public class LinkedListExample {
public static void main(String[] args) {
// 创建一个 LinkedList
LinkedList<String> fruits = new LinkedList<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// 使用 getFirst() 获取第一个元素
String firstFruit = fruits.getFirst();
System.out.println("第一个水果是: " + firstFruit); // 输出: 第一个水果是: Apple
}
}
与类似方法的比较
实例
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(10);
numbers.add(20);
// getFirst() 和 peekFirst() 在非空链表中的行为相同
System.out.println(numbers.getFirst()); // 输出: 10
System.out.println(numbers.peekFirst()); // 输出: 10
// 但链表为空时的行为不同
numbers.clear();
// System.out.println(numbers.getFirst()); // 抛出 NoSuchElementException
System.out.println(numbers.peekFirst()); // 输出: null
numbers.add(10);
numbers.add(20);
// getFirst() 和 peekFirst() 在非空链表中的行为相同
System.out.println(numbers.getFirst()); // 输出: 10
System.out.println(numbers.peekFirst()); // 输出: 10
// 但链表为空时的行为不同
numbers.clear();
// System.out.println(numbers.getFirst()); // 抛出 NoSuchElementException
System.out.println(numbers.peekFirst()); // 输出: null
注意事项
异常处理
当链表为空时调用 getFirst()
方法会抛出 NoSuchElementException
。因此,在使用前最好检查链表是否为空:
实例
if (!myList.isEmpty()) {
E element = myList.getFirst();
// 处理元素
} else {
System.out.println("链表为空");
}
E element = myList.getFirst();
// 处理元素
} else {
System.out.println("链表为空");
}
替代方法
如果希望在链表为空时返回 null
而不是抛出异常,可以使用 peekFirst()
方法:
实例
E element = myList.peekFirst(); // 链表为空时返回 null
实际应用场景
场景 1:处理队列
实例
LinkedList<Order> orderQueue = new LinkedList<>();
// 添加订单...
// 获取并处理队列中的第一个订单
if (!orderQueue.isEmpty()) {
Order firstOrder = orderQueue.getFirst();
processOrder(firstOrder);
}
// 添加订单...
// 获取并处理队列中的第一个订单
if (!orderQueue.isEmpty()) {
Order firstOrder = orderQueue.getFirst();
processOrder(firstOrder);
}
场景 2:实现栈操作
虽然 LinkedList 通常用作队列,但也可以用它实现栈(后进先出):
实例
LinkedList<String> stack = new LinkedList<>();
stack.push("First"); // 相当于 addFirst()
stack.push("Second");
stack.push("Third");
// 查看栈顶元素而不移除
String top = stack.getFirst(); // 返回 "Third"
stack.push("First"); // 相当于 addFirst()
stack.push("Second");
stack.push("Third");
// 查看栈顶元素而不移除
String top = stack.getFirst(); // 返回 "Third"
总结
getFirst()
方法是 LinkedList
类中一个简单但实用的方法,它允许我们快速访问链表的第一个元素。记住它与 peekFirst()
的区别,并根据实际需求选择使用哪个方法。在可能为空的情况下,使用前进行空检查或考虑使用 peekFirst()
可以避免运行时异常。
点我分享笔记