LinkedList的简单介绍
java.util.LinkedList 集合数据存储的结构是链表结构。LinkedList是一个双向链表
在实际开发中,对一个集合元素的添加和删除,经常涉及到首尾操作,而LinkedList就提供了大量的首尾操作的方法
LinkedList集合的特点
1、方便元素的添加、删除
2、元素的查询慢
2、里面包括了大量首尾首尾操作的方法
注意:LinkedList集合的方法不能使用多态
为什么说LinkedList集合添加、删除元素方便,查询元素慢
首先,LinkedList集合数据存储的结构是链表结构,
而链表是添加、删除元素方便,查询元素慢的:
查询慢:链表中地址不是连续的每次查询元素都必须从头开始查询
增删快:链表结构增加/删除一个元素对链表的整体结构没有影响,所以增删快
操作集合首尾的方法、是否为空判断方法
public voidaddFirst(E e):将指定元素插入此列表的开头。public voidaddLast(E e):将指定元素添加到此列表的结尾。publicE getFirst():返回此列表的第一个元素。publicE getLast():返回此列表的最后一个元素。publicE removeFirst():移除并返回此列表的第一个元素。publicE removeLast():移除并返回此列表的最后一个元素。public voidpush(E e):将元素推入此列表所表示的堆栈。publicE pop():从此列表所表示的堆处弹出一个元素。public boolean isEmpty():如果列表不包含元素,则返回true
addFirst()和addLast()方法
public classDemoLinkedListAddFirstLast {public static voidmain(String[] args) {//创建LinkedList链表集合对象
LinkedList linkedList = new LinkedList<>();//向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList);//用addFirst方法向链表集合开头添加一个元素
linkedList.addFirst("开头");//用addLast方法向链表集合开头添加一个元素
linkedList.addLast("结尾");
System.out.println(linkedList);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
[开头, 链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5, 结尾]
getFirst()和getLact()方法
importjava.util.LinkedList;public classDemoLinkedListGetFirstLast {public static voidmain(String[] args) {//创建LinkedList链表集合对象
LinkedList linkedList = new LinkedList<>();//向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList);//获取此列表的第一个元素。
String first =linkedList.getFirst();//获取此列表的最后一个元素。
String last =linkedList.getLast();
System.out.println("第一个元素:" +first);
System.out.println("最后一个元素:" +last);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
第一个元素:链表元素0
最后一个元素:链表元素5
removeFirst()和removeLast()方法
importjava.util.LinkedList;public classDemoLinkedListRemoveFirstLast {public static voidmain(String[] args) {//创建LinkedList链表集合对象
LinkedList linkedList = new LinkedList<>();//向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList);//移除并返回此列表的第一个元素
String first =linkedList.removeFirst();//移除并返回此列表的最后一个元素
String last =linkedList.removeLast();
System.out.println("移除的第一个元素:" +first);
System.out.println("移除的最后一个元素:" +last);
System.out.println("此时的集合:" +linkedList);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
移除的第一个元素:链表元素0
移除的最后一个元素:链表元素5
此时的集合:[链表元素1, 链表元素2, 链表元素3, 链表元素4]
push()和pop()方法
说明:push()方法和addFirst()方法功能一样
pop()方法和removeFirst()方法功能一样
importjava.util.LinkedList;public classDemoLinkedListPushPop {public static voidmain(String[] args) {//创建LinkedList链表集合对象
LinkedList linkedList = new LinkedList<>();//向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
System.out.println("原集合:" +linkedList);//将元素推入此列表所表示的堆栈
linkedList.push("push元素");
System.out.println("push()操作后的集合:" +linkedList);//从此列表所表示的堆处弹出一个元素
linkedList.pop();
System.out.println("push()操作后的集合:" +linkedList);
}
}
输出结果:
原集合:[链表元素0, 链表元素1, 链表元素2]
push()操作后的集合:[push元素, 链表元素0, 链表元素1, 链表元素2]
push()操作后的集合:[链表元素0, 链表元素1, 链表元素2]
isEmpty()方法
importjava.util.LinkedList;public classDemoLinkedListIsEmpty {public static voidmain(String[] args) {//创建LinkedList链表集合对象
LinkedList linkedList = new LinkedList<>();boolean b1 =linkedList.isEmpty();
System.out.println("集合是否为空:" +b1);//向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");boolean b2 =linkedList.isEmpty();
System.out.println("集合是否为空:" +b2);
}
}
输出结果:
集合是否为空:true集合是否为空:false