一. LinkedList 常见操作
package List 相关;
- /**
- * LinkedList 链接列表
- * LinkedList: 底层使用的链表数据结构. 特点: 增删速度快, 查询速度稍慢;
- */
- import java.util.Iterator;
- import java.util.LinkedList;
- class linkedlist_test {
- public static void main(String[] args) {
- LinkedList linkedlist = new LinkedList();
- LinkedList linkedlist1 = new LinkedList();
- linkedlist1.add("what");
- // linkedlist1.add("zhangj");
- /** 增 */
- System.out.println("------------ 新增操作 ------------");
- // 在尾部进行添加元素
- linkedlist.add("what");
- linkedlist.add("?");
- // 在指定位置添加元素
- linkedlist.add(1, "now");
- System.out.println(linkedlist);
- // 在列表首位添加元素
- linkedlist.addFirst("one");
- // 在列表尾部添加元素
- linkedlist.addLast("last");
- // 在指定添加元素
- linkedlist.addAll(1, linkedlist1);
- System.out.println(linkedlist);
- /** 查 */
- System.out.println("------------ 查询操作 ------------");
- System.out.println("linkedlist 链表列表为:" + linkedlist);
- // 获取首位元素
- Object obj1 = linkedlist.getFirst();
- // 获取指定位置的元素
- Object obj2 = linkedlist.get(2);
- // 获取尾部的元素
- Object obj3 = linkedlist.getLast();
- // 查询链表列表的长度 (元素个数)
- int a1 = linkedlist.size();
- System.out.println("首位元素为:" + obj1 + "; 第三个元素为:" + obj2 + "; 尾部元素为:" + obj3 + "; 内部元素个数为:" + a1);
- /** 修改 */
- System.out.println("------------ 修改操作 ------------");
- System.out.println("修改之前的链表列表为:" + linkedlist);
- linkedlist.set(1, "what you");
- System.out.println("修改之后的链表列表为:" + linkedlist);
- // 遍历列表
- // 通过 while 方式来遍历
- Iterator it1 = linkedlist.listIterator();
- // while (it1.hasNext()){
- // System.out.println("while:"+it1.next());
- // }
- // 通过 for 循环方式来遍历
- for (; it1.hasNext();) {
- System.out.println("for:" + it1.next());
- }
- /** 删
- * 在使用 remove 进行删除时, 在进行删除操作的同时也会把此次删除的对象取出来
- * remove(intdex int) 在进行删除操作时, 若 index 超出角标边界, 则会抛异常 IndexOutOfBoundsException
- * 但是在使用 poll 类型进行操作时, 若 index 超出角标边界, 则会返回 null
- *
- */
- System.out.println("------------ 删除操作 ------------");
- System.out.println("删除开始的链表列表为:" + linkedlist);
- //removeFirstOccurrence, 在 linkedlist 中指定元素第一个出现
- linkedlist.add(1, "now");
- System.out.println("-----begin-------------" + "linkedlist=" + linkedlist);
- // linkedlist.removeFirstOccurrence("now");
- //removeLastOccurrence, 在 linkedlist 中指定元素第一个出现
- linkedlist.removeLastOccurrence("now");
- System.out.println("-----end---------------" + "linkedlist=" + linkedlist);
- // 删除指定元素对象, 有指定元素则删除, 无指定元素则不操作, 返回值为 Boolean 类型
- Object obj5 = linkedlist.remove("?");
- System.out.println("删除链表列表的元素为:" + obj5);
- // 删除指定索引位置的对象
- linkedlist.remove(0);
- // 按索引删除首位元素, 等价于 linkedlist.remove(0);
- linkedlist.removeFirst();
- // 按索引删除尾部元素
- Object O = linkedlist.removeLast();
- System.out.println(O);
- // 删除所有的元素 (清空列表)
- linkedlist.clear();
- //remove 和 poll 删除方法的比较
- // linkedlist.remove(9);
- Object obj9 = linkedlist.poll();
- System.out.println("obj9=" + obj9);
- System.out.println("删除结束的链表列表为:" + linkedlist);
- // 其他方法简介, 不作说明
- // E peek()
- // 检索但不删除此列表的头 (第一个元素).
- // E peekFirst()
- // 检索但不删除此列表的第一个元素, 如果此列表为空, 则返回 null .
- // E peekLast()
- // 检索但不删除此列表的最后一个元素, 如果此列表为空, 则返回 null .
- // E poll()
- // 检索并删除此列表的头 (第一个元素).
- // E pollFirst()
- // 检索并删除此列表的第一个元素, 如果此列表为空, 则返回 null .
- // E pollLast()
- // 检索并删除此列表的最后一个元素, 如果此列表为空, 则返回 null .
- // E pop()
- // 从此列表表示的堆栈中弹出一个元素.
- }
- }
二. 一个实际中操作
概念简单说明:
栈堆: 元素先进后出, 类似水杯装水;
队列: 元素先进先出, 类似水管输水;
需求: 实现一个类型栈堆或队列的功能容器
1. 封装一个类似类型栈堆或队列的功能容器
- import java.util.LinkedList;
- public class linkedlist_test1 {
- /* 实现类似栈堆或队列功能的容器 */
- private LinkedList linkedlist;
- // 构造函数, 一开始就生成一个链表队列 linkedlist
- linkedlist_test1(){
- linkedlist = new LinkedList();
- }
- // 定义向链表队列添加元素的功能
- public void addElement(Object obj){
- linkedlist.add(obj);
- }
- // 定义一个类似栈堆功能 (先进后出)
- public Object ZhanDui(){
- return linkedlist.removeFirst();
- }
- // 定义一个类似队列功能 (先进先出)
- public Object DuiLie(){
- return linkedlist.removeLast();
- }
- // 定义一个判断 linkedlsit 是否为空的功能
- public boolean isNull(){
- return linkedlist.isEmpty();
- }
2. 调用封装好的类
- public class Tset{
- public static void main(String[] args){
- linkedlist_test1 test = new linkedlist_test1();
- String array[] = {"what","you","want"};
- test.addElement(1);
- test.addElement("you");
- test.addElement("and");
- test.addElement(array);
- // 栈堆功能
- // while (!test.isNull()){
- // System.out.println(test.DuiLie());
- // }
- // 队列功能
- for(;!test.isNull();){
- System.out.println(test.ZhanDui());
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2704554.html