ArrayList集合底层原理
- ArrayList底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作
- 第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组
每添加一个元素,size就会向后移,指向下一个要添加元素的位置
当size指向索引10的位置时候,就会自动1.5倍扩容,扩容到15,等
LinkedList集合底层原理
特点
底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。
特有功能
代码演示
//栈
LinkedList<String> stack = new LinkedList<>();
//入栈,压栈
stack.addFirst("第一颗子弹");
stack.addFirst("第二颗子弹");
stack.addFirst("第三颗子弹");
stack.addFirst("第四颗子弹");
System.out.println(stack);//[第四颗子弹,第三颗子弹,第二颗子弹,第一颗子弹,]
//出栈,弹栈
stack.removeFirst();
stack.removeFirst();
stack.removeFirst();
System.out.println(stack);//[第一颗子弹]
//队列
LinkedList<String> queue = new LinkedList<>();
//入队
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);//[1号,2号,3号,4号]
//出队
queue.removeFirst();
queue.removeFirst();
queue.removeFirst();
System.out.println(queue);//[4号]
栈
LinkedList<String> stack = new LinkedList<>();
// 入栈 压栈 (push)
stack.push("第1颗子弹");
stack.push("第2颗子弹");
stack.push("第3颗子弹");
stack.push("第4颗子弹");
System.out.println(stack);
// 出栈 弹栈 pop
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack);
}