LinkedList使用大全

乔欣 Java教程 发布时间:2022-12-04 18:18:05 阅读数:15426 1
下文笔者将从Linkedlist对象的创建、添加、删除、修改操作等一一讲解,如下所示

LinkedList创建

//定义LinkedList 链表结构
 LinkedList list = new LinkedList();

LinkedList添加操作

//追加元素到list尾部
list.add("java265.com-1");
//添加元素到list头部
list.addFirst("java265.com-2"); 
//添加元素到list尾部
list.addLast("java265.com-3");
//添加元素到list的指定下标
list.add(2,"java265.com");
 

LinkedList删除操作

//删除指定元素
list.remove("java265.com-1");
//删除下标为1的元素
list.remove(2);
//删除头部元素
list.removeFirst();
//删除尾部元素
list.removeLast();

LinkedList元素修改操作

//将下标为2上的元素修改为666
list.set(2,666);
System.out.println(list);

LinkedList查询操作

//获取链表长度
int size = list.size();
System.out.println(size);
//判断链表是否为空
boolean empty = list.isEmpty();
System.out.println(empty);
//判断是否有指定元素
boolean b = list.contains("java265.com");
System.out.println(b);
//获取指定下标的元素
Object o = list.get(3);
System.out.println(o);
//获取第一个元素
Object first = list.getFirst()
System.out.println(first);
//获取最最后一个元素
Object last = list.getLast();
System.out.println(last);

LinkedList源码分析

 
	 /**
	 * Constructs an empty list.
	 */
	public LinkedList() {
	}
 该类的构造方法内是空的,没有任何的代码。 但是该类中有三个属性。   
	transient int size = 0; //索引
   
	transient Node<E> first; //第一个元素对象 
   
	transient Node<E> last; //表示最后一个元素对象。
 
================ add的源码=====E:理解为Object类型==========================。
   public boolean add(E e) {
		linkLast(e);
		return true;
	}


   void linkLast(E e) {
		final Node<E> l = last;
		//上一个节点   数据  下一个节点
		final Node<E> newNode = new Node<>(l, e, null);
		last = newNode;
		if (l == null)
			first = newNode;
		else
			l.next = newNode;
		size++;
		modCount++;
	}
	
   ==================Node的源码 内部类=======================================   
   private static class Node<E> { //<E>泛型--object
		E item; //数据
		Node<E> next; //下一个节点
		Node<E> prev; //上一个节点

		Node(Node<E> prev, E element, Node<E> next) {
			this.item = element;
			this.next = next;
			this.prev = prev;
		}
	}
	1、==================== get(1)-----获取元素========================
	   public E get(int index) {
			checkElementIndex(index); //检查index下标是否正确。
			return node(index).item;  //Node对象
		} 

 Node<E> node(int index) {
		//>> 位运算二进制运算 ----- size >> 1 一半的意思size/2
		if (index < (size >> 1)) { //前半部分
			Node<E> x = first; 
			for (int i = 0; i < index; i++)
				x = x.next;
			return x;
		} else {  //后半部分
			Node<E> x = last;
			for (int i = size - 1; i > index; i--)
				x = x.prev;
			return x;
		}
	}

 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202212/5022.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者