List两种初始化方式
方式一
List myList = new ArrayList();
方式二
List myList = new LinkedList();
1
2
3
4
5
List两种初始化方式的区别及其使用场景
.
List myList = new ArrayList();
.
方式一的底层是靠数组来实现构建该结构的,数组的优点就是“查询”特别快,相对来说,“增删改”较慢(PS:比如我要在数组中插入一条数据,那么原来该位置的数据及其后面的数据都需要向后移动一位下标)。所以该种方式适合需要频繁查询的对象。
.
List myList = new LinkedList();
.
方式二的底层是靠链表来实现构建该结构的,链表的优点就是“增删改”特别快,相对来说,“查询”较慢(PS:比如我要在链表中插入一条数据,那么原来该位置的节点及其前面的节点断掉指针,将待插入的节点连接上即可)。所以该种方式适合需要频繁增删改的对象。
.
返回栈定元素两种类型比较
.
Stack.peek()
peek()函数返回栈顶的元素,但不弹出该栈顶元素。
.
Stack.pop()
pop()函数返回栈顶的元素,并且将该栈顶元素出栈。
public class ListNode {
int val;
protected ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
package 牛客网练习题;
import java.util.Stack;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();//栈初始化
//ArrayList<Integer> list = new ArrayList<>();
while (listNode != null) {//判断链表中该指针不为空
stack.push(listNode.val);//将该指针的值压栈
listNode = listNode.next;;//将当前指针的下一个指针赋给当前指针
}
ArrayList<Integer> list = new ArrayList<>();//数组链表初始化
while (!stack.isEmpty()) {//循环条件:栈不为空
list.add(stack.pop());//返回栈定元素,并使栈定元素出栈
}
return list;
}
}
博客介绍了List的两种初始化方式,ArrayList基于数组,查询快、增删改慢,适合频繁查询;LinkedList基于链表,增删改快、查询慢,适合频繁增删改。还比较了Stack的peek()和pop()函数,前者返回栈顶元素但不出栈,后者返回并出栈。

612

被折叠的 条评论
为什么被折叠?



