集合-List - new LinkedList 双向链表
LikendList双向链表:
- 链表的优点:
- 因为i链表上的元素在空间存储上内存地址不连续, 所以随机增删元素的时候不会有大量元素位移,因此随机增删效率较高。
- 在开发中,如果遇到随机增删集合中元素的业务比较多时,建议 使用LinkedList。
- 链表的缺点:
- 不能通过数学表达式计算被查找元素的内存地址,每一次查找都是从头节点开始遍历,直到找到为止。
- 所以LinkedList集合检索/查找的效率较低。
new ArrayList 和new LinkedList 那个使用较多?
- ArrayList:把检索发挥到极致。(末尾添加元素效率还是很高的。)
- LinkedList:把随机增删发挥到极致。
- 加元素都是往末尾添加,所以ArrayList用的比LinkedList多。
new LinkedList 双向链表
- 底层是数组,LinkedList底层元素有下标。
- 没有初始化容量,最初这个链表中没有任何元素。first和last引用都是null。
- LinkedList集合照样有下标,但是检索/查找某个元素的时候效率比较低,因为只能从头节点开始一个一个遍历。
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class LinkedListTest01 { public static void main(String[] args) {
//List list2 = new ArrayList(); // 这样写表示底层你用了数组。 // 创建一个结合,在里面添加元素 List list = new LinkedList();// 这样写表示底层你用了双向链表。 list.add("a"); list.add("b"); list.add("c"); //遍历集合 for(int i = 0; i <list.size(); i++){ Object obj = list.get(i); System.out.println(obj); } } }
单向链表:
双向链表: