【java源码阅读系列】LinkedList 类型

https://blog.csdn.net/qq_19431333/article/details/54572876
参考上面文章
LinkedList 是一个双向链表
New 一个对象的时候
public LinkedList() {
header.next = header.previous = header;
}
头部值是空的,保存前面节点,后面节点的信息,保存的是Entry内部类
private static class Entry {
E element;
Entry next;
Entry previous;

Entry(E element, Entry<E> next, Entry<E> previous) {
    this.element = element;
    this.next = next;
    this.previous = previous;
}·
}

1.Add
调用私有方法addBefore 在链表当前位后面加入元素。
2.addAll 链表中直接添加元素
public boolean addAll(Collection<? extends E> c) {
return addAll(size, c);
}
3.addFirst push
也是调用私有方法addBefore 在链表前位置的前面添加元素
private Entry addBefore(E e, Entry entry) {
Entry newEntry = new Entry(e, entry, entry.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
这里只关注自己前后的位置,先建一个Entry对象(需要插入的对象),前后节点规定为原来的首位对象,原来首位对象的前面的对象。
然后将previous.next next.previous 修改为新的对象
4.addLast pop
与addFirst类似,将末尾的对象传进去,调用addBefore方法。
5.Contains
调用indexOf方法,遍历链表,找到所选元素的位置。
6.Clone
调用父类方法,
protected native Object clone() throws CloneNotSupportedException;
7.isEmpty
获取链表的大小,判断是不是等于0。
8.Equals
未重写,直接判断链表实体类的值是不是相等的。(string类型把Equals方法重写了)
9.offerFirst,peekFirst(1.6),peek (1.5)。
10.pollFirst,poll 移除第一个元素
11.remove方法移除指定位置的元素 先找到这个元素,然后将这个元素前一个元素的next改为这个元素的next,将这个元素的下一个元素的previous改为这个元素的previous,然后将这个元素的next,previous,element改为null。

测试代码:
import java.util.LinkedList;

public class ReadLinkedList {
public static void main(String[] args) {
LinkedList a = new LinkedList();
LinkedList b = new LinkedList();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
a.add(5);
a.add(6);
a.add(7);
b.addAll(a);
b.addFirst(8);
b.addLast(9);
b.contains(1);
a = (LinkedList) b.clone();
a.add(11);
a.isEmpty();
System.out.println(a.equals(b));
a.get(0);
a.indexOf(1);
a.offerFirst(1);
a.peekFirst();
a.peek();
a.pollFirst();
a.poll();
a.remove(5);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值