Java.util.LinkedList.offer()、offerFirst()、offerLast()方法
链表还有一个功能,可以进行 灵活的元素添加 且帮助在列表前后添加元素,这些函数字面意思是提供这个设施并以offer()的命名。以下是三种类型的offer()方法并进行讨论。
1. offer(E e) : 该方法将 指定的元素添加为列表的尾部 (即最后一个元素)。
声明:
public boolean offer(E e)
参数:
e: 要添加的元素
返回值:
此方法返回true
// Java代码来演示在链表中实现offer(E e)的工作
import java.util.*;
public class LinkedListoffer1 {
public static void main(String[] args)
{
// 声明一个LinkedList
LinkedList list = new LinkedList();
// 添加元素
list.add("Geeks");
list.add(4);
list.add("Geeks");
list.add(8);
// 打印列表
System.out.println("The initial Linked list is : " + list);
// 插入新元素
// 在尾部添加元素。
list.offer("Astha");
// 打印新列表
System.out.println("LinkedList after insertion using offer() : " + list);
}
}
输出:
The initial Linked list is : [Geeks, 4, Geeks, 8]
LinkedList after insertion using offer() : [Geeks, 4, Geeks, 8, Astha]
2. offerFirst(E e) : 该方法 在这个列表的前面插入 指定的元素。
声明:
public boolean offerFirst(E e)
参数:
e: 要添加的元素
返回值:
此方法返回true
// Java代码来演示在链表中实现offerFirst(E e)的工作
import java.util.*;
public class LinkedListOfferFirst {
public static void main(String[] args)
{
// 声明一个LinkedList
LinkedList list = new LinkedList();
// 添加元素
list.add("Geeks");
list.add(4);
list.add("Geeks");
list.add(8);
// 打印列表
System.out.println("The initial Linked list is : " + list);
// 插入新元素
// 在头部添加元素。
list.offerFirst("Astha");
// 打印新列表
System.out.println("LinkedList after insertion using offerFirst() : " + list);
}
}
输出:
The initial Linked list is : [Geeks, 4, Geeks, 8]
LinkedList after insertion using offerFirst() : [Astha, Geeks, 4, Geeks, 8]
3. offerLast(E e) : 该方法 在这个列表的末尾插入 指定的元素。
声明:
public boolean offerLast(E e)
参数:
e: 要添加的元素
返回值:
此方法返回true
// Java 代码演示 offerLast(E e) 在链表中的工作原理
import java.util.*;
public class LinkedListOfferLast {
public static void main(String[] args)
{
// 声明 LinkedList
LinkedList list = new LinkedList();
// 添加元素
list.add("Geeks");
list.add(4);
list.add("Geeks");
list.add(8);
// 打印列表
System.out.println("The initial Linked list is : " + list);
// 添加新元素
// 添加元素在末尾
list.offerLast("Astha");
// 打印新列表
System.out.println("LinkedList after insertion using offerLast() : " + list);
}
}
输出:
The initial Linked list is : [Geeks, 4, Geeks, 8]
LinkedList after insertion using offerLast() : [Geeks, 4, Geeks, 8, Astha]
实际应用: 这些函数的“灵活添加”特性可用于实现优先级添加,当具有大于阈值的元素需要在小于该元素的元素之前处理时,可以使用这些特性。以下是关于此的小段代码。
// Java 代码演示 offer() 在链表中的应用
import java.util.*;
public class LinkedListOfferLast {
public static void main(String[] args)
{
// 声明 LinkedLists
LinkedList<Integer> list = new LinkedList<Integer>();
LinkedList prioList = new LinkedList();
// 添加元素
list.add(12);
list.add(4);
list.add(8);
list.add(10);
list.add(3);
list.add(15);
// 声明阈值
int thres = 10;
// 打印列表
System.out.println("The initial Linked list is : " + list);
while (!list.isEmpty()) {
int t = list.poll();
// 添加 >=10 的数字在列表前面,其余添加在列表后面
if (t >= 10)
prioList.offerFirst(t);
else
prioList.offerLast(t);
}
// 结果列表如下
System.out.println("The prioritized Linked list is : " + prioList);
}
}
输出:
The initial Linked list is : [12, 4, 8, 10, 3, 15]
The prioritized Linked list is : [15, 10, 12, 4, 8, 3]