1. add() 和 addAll()方法
@Test
void test01() {
List ns = new ArrayList<>();
ns.add(1);
ns.add(2);
ns.add(3);
ns.add(4);
ns.add(5);
ns.add(6);
List nums = new LinkedList<>();
nums.add(11);
nums.add(112);
nums.add(0, 123);
nums.addAll(ns);
System.out.println(nums);
}
@Test
void test02() {
List ns = new ArrayList<>();
ns.add(1);
ns.add(2);
ns.add(3);
ns.add(4);
ns.add(5);
ns.add(6);
List nums = new LinkedList<>();
nums.add(11);
nums.add(112);
nums.add(0, 123);
ns.addAll(nums);
System.out.println(ns);
}
2. subList()方法
注意:前闭后开区间
@Test
void test03() {
List nums = new LinkedList<>();
nums.add(11);
nums.add(112);
nums.add(1122);
nums.add(1128);
nums.add(1129);
nums.add(0, 123);
System.out.println(nums);
System.out.println(nums.size());
// 切割一个全新的子列表
System.out.println(nums.subList(1, 3));
nums.forEach(new MyConsumer());
}
LinkedList不仅仅是一个简单的双向链表
同时也是一种栈
FILO 先进后出的栈
@Test
void testLinkedListAsStack() {
LinkedList nums = new LinkedList<>();
// 推入栈中
nums.push(1230);
nums.push(456);
nums.push(789);
nums.push(852);
nums.push(147);
nums.push(123654);
System.out.println(nums);
// 弹出栈
System.out.println(nums.pop());
System.out.println(nums.pop());
System.out.println(nums.pop());
System.out.println(nums.peek());
System.out.println(nums.size());
}
LinkedList不仅仅是一个简单的双向链表
同时也是一种队列;
FIFO 先进先出的队列
@Test
void testLinkedListAsQueue() {
LinkedList nums = new LinkedList<>();
// 添加到队列中
nums.offer(1230);
nums.offer(456);
nums.offer(789);
nums.offer(852);
nums.offer(147);
System.out.println(nums);
// 出队列
System.out.println(nums.poll());
System.out.println(nums.poll());
System.out.println(nums.poll());
// 看一看第一个队列顶部元素是什么
System.out.println(nums.element());
System.out.println(nums.size());
}
LinkedList 也可以作为双端队列
前六个方法的作用和后六个作用一样,不同之处在于,前六个失败会抛出异常,后面的是返回boolean或者返回null来表示
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 头部添加元素
nums.addFirst(123);
nums.addFirst(456);
// 尾部添加元素
nums.addLast(789);
nums.addLast(159);
System.out.println(nums);
//移除第一个,最后一个元素
System.out.println(nums.removeFirst());
System.out.println(nums.removeLast());
System.out.println(nums);
}
2. getFirst、getLast
1)、正常情况
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 头部添加元素
nums.addFirst(123);
nums.addFirst(456);
// 尾部添加元素
nums.addLast(789);
nums.addLast(159);
System.out.println(nums);
// 获取队列的头尾
System.out.println(nums.getFirst());
System.out.println(nums.getLast());
System.out.println(nums);
}
2)、元素为空,无返回值,就只能抛异常
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 获取队列的头尾
System.out.println(nums.getFirst());
System.out.println(nums.getLast());
System.out.println(nums);
}
3.offerFirst、offerLast
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 头部添加元素
nums.addFirst(123);
nums.addFirst(456);
// 尾部添加元素
nums.addLast(789);
nums.addLast(159);
System.out.println(nums);
// 返回布尔值类来表示是否成功
System.out.println(nums.offerFirst(1));
System.out.println(nums.offerLast(1));
System.out.println(nums);
}
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 返回布尔值类来表示是否成功
System.out.println(nums.offerFirst(1));
System.out.println(nums.offerLast(1));
System.out.println(nums);
}
4. pollFirst、pollLast
1)、正常情况
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// LinkedList 也可以作为双端队列
// 头部添加元素
nums.addFirst(123);
nums.addFirst(456);
nums.addLast(789);
nums.addLast(159);
System.out.println(nums.pollFirst());
System.out.println(nums.pollLast());
}
2)、元素为空,返回失败,则返回null来表示
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// 如果失败,则返回null来表示,否则返回删除的元素
System.out.println(nums.pollFirst());
System.out.println(nums.pollLast());
}
5. peekFirst、peekLast
1)、正常情况
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
// LinkedList 也可以作为双端队列
// 头部添加元素
nums.addFirst(123);
nums.addFirst(456);
nums.addLast(789);
nums.addLast(159);
System.out.println(nums.peekFirst());
System.out.println(nums.peekLast());
}
2)、元素为空,返回失败,则返回null来表示
@Test
void testLinkedListAsDeQueue() {
LinkedList nums = new LinkedList<>();
System.out.println(nums.peekFirst());
System.out.println(nums.peekLast());
}