LinkedList链表实现的原理
链表结构: 查询慢,增删快
查询慢:由于不能直接找到元素的地址,需要上一个元素推导出下一个元素的地址,
这种查询速度较慢
增删快:在添加的时候,只需要更改元素所记录的地址值即可
LinkedList是方便添加删除的List。
提供了大量首尾操作
public void addFirst(E e) 添加首个元素
public void addLast(E e) 添加最后元素
public E getFirst() 获取首个元素
public E getLast() 获取最后元素
publicclass Demo01LinkedList {
publicstaticvoid main(String[] args) {
//创建集合对象
LinkedList<String> list = newLinkedList<String>();
//向集合中添加元素
list.add("Jack");
list.add("Rose");
list.add("Trump");
//获取元素
String name = list.get(1);
System.out.println(name);
//返回集合的迭代器
Iterator<String> itr = list.iterator();
while(itr.hasNext()) {
String thisName = itr.next();
System.out.println(thisName);
}
System.out.println("=======================");
//使用增强for循环
for (String thisName : list) {
System.out.println(thisName);
}
System.out.println("======================");
//做首尾的添加与删除动作
System.out.println(list);
list.addFirst("LiLei");
list.addLast("HanMeiMei");
System.out.println(list);
System.out.println(list.getFirst());
System.out.println(list.getLast());
}
}
LinkedList是支持栈结构
对应的方法
push压栈
pop弹栈
peek查询出即将要弹出的是哪个元素,检查有没有要弹出的元素
publicclass Demo02stack {
publicstaticvoid main(String[] args) {
//创建栈结构的集合
LinkedList<String> stack = newLinkedList<String>();
stack.push("Jack");
stack.push("Rose");
stack.push("Trump");
System.out.println(stack);
//获取一个元素,此时,由于是栈结构,所以获取的是最后压栈的元素
String popName = stack.pop();
System.out.println(popName);
//弹栈动作,集合中减少元素
System.out.println(stack);
String peekName = stack.peek();
System.out.println(peekName);
//peek查看元素不会减少元素
System.out.println(stack);
}
}
LinkedList是支持队列结构的
对应的方法
offer加入队列
poll离开队列
peek查询出即将要离开队列的是哪个元素,检查有没有要离开队列的元素
publicclass Demo03queue {
publicstaticvoid main(String[] args) {
//创建栈结构的集合
LinkedList<String> queue = newLinkedList<String>();
queue.offer("Jack");
queue.offer("Rose");
queue.offer("Trump");
System.out.println(queue);
String pollName = queue.poll();
System.out.println(pollName);
System.out.println(queue);
String peekName = queue.peek();
System.out.println(peekName);
System.out.println(queue);
}
}