LinkedList知识点
1、实现了Iterable接口的类具有迭代功能。
2、List接口为Collection的子类,表示线形数据列表,其实现类有:ArrayList(数组线性表)与LinkedList(链表)
算了不多说了,上图吧

3、ArrayList是一个可变数组(当存储数据长度大于当前数组长度时,会重新声明一个数组,将原来的数据拷贝过来。)

4、LinkedList的第一个元素的Pre值一定为nell ,可以用来判断是不是第一个元素

5、ArrayList元素地址是连续的,LinkedList的地址不连续。

6、ArrayList是数组的线性的数据结构,使用连续的内存单元存储数据元素,对元素的遍历速度比较快LinkedList在遍历集合元素方面比较慢,因为需要寻找下一个元素的地址。
LinkedList是双向链表数据结构,前一个元素储存了后一个元素的地址,后一个元素记录了前一个元素的地址。当添加过删除元素时比较快。因为ArrayList需要移动删除或添加元素后的所有元素。

7、留下的疑问:什么是线程安全?等到讲完多线程后再来做补充,使用多线程的目的是为了使程序跑的更快一点

7、Linkedlist删除元素时直接将要删除元素的前一个元素的next指向要删除元素后一个元的pre即可。

8、向指定位置添加元素
代码实现

stus.add(1, "孙悟空");

9、迭代器的使用
(1)如果只是打印的话则不需要将数据转为字符串的形式
代码实现:

Iterator iter = stus.iterator();while(iter.hasNext()) {System.out.println("====>" + iter);}

(2)如果想对数据进行处理,则需要将数据转化为String类型,有两种方法
方法一:
代码实现:

Iterator iter = stus.iterator();while(iter.hasNext()) {String n = (String) iter.next();System.out.println("=====>" + n);    }

方法二:
代码实现:

Iterator iter = stus.iterator();while(iter.hasNext()) {String n = iter.next() + "";System.out.println("====>" + n);}

注:任何的对象和字符串拼接都会变成字符串

10、LinkedList新增的方法
LinkedList除了实现List提供的抽象方法外,还增加了一些方法:

  1. void addFirst(Object o) 将指定数据元素插入此集合的开头,原来元素(如果有)后移;
  2. void addLast(Object o) 将指定数据元素插入此集合的结尾
  3. Object getFirst() 返回此集合的第一个数据元素
  4. Object getLast() 返回此集合的最后一个数据元素
  5. Object removeFirst() 移除并返回集合表的第一个数据元素
  6. Object removeLast() 移除并返回集合表的最后一个数据元素
    新增的六个方法都要记住

泛型
1、实例化对象时的用法
代码实现:

List<Student> list = new ArrayList<Student>();

2、引用类型
例:

list.add(stu);
stu.setStuNo("2019");
list.add(stu);

由于add的两个stu地址相同,所以打印时输出的内容是一样的。

LinkedList的源码分析

1、

public class ArrayList<E>

E指的是元素,表示ArrayList盛放元素的类型

2、最后一个元素如果为null则说明该集合是空的。

小作业:将LinkFirst和LinkList自己写一下

ArrayList的源码分析

1、其中有一个有参的构造方法

public ArrayList(int initialCapacity)

很重要!因为它可以在实例化ArrayList时指定默认的长度。(无参的构造方法初始化一个长度为10的数组(默认值为10)数组)
避免一些不必要的空间扩容和元素复制。

public ArrayList(Collection<? extends E> c)

2、以上代码 中?部分表示的是表示的输入的类型必须为ArrrayList的类或其子类,作用是将集合中的元素添加到新new的ArrayList当中。
3、疑问:这一步干什么用的?
if (elementData.getClass() != Object[].class)

【java】兴唐第二十一节(LinkedList和泛型)相关推荐

  1. Python编程基础:第二十一节 函数返回Return

    第二十一节 函数返回Return 前言 实践 前言 编程往往是用于实现某种计算并将计算结果进行返回,例如我们定义了一个函数用于计算两个数的和,那么最终的目的是将计算结果返回给用户.所以我们这里要进一步 ...

  2. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解

       第二十一节 牛顿法和L-BFGS求函数最优解 这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS.以下是本节目录.            目录 1-L-BFGS算法简介 2-牛顿法求根 ...

  3. 【java】兴唐第二十节课(Collection 和 ArrayList)

    (一)Collection 1.如果实现 --able 名称的接口则证明该类或其子类有该功能 (1)实现Iterable接口代表具有迭代功能 (2)实现Cloneable接口代表具有克隆功能 (3)实 ...

  4. Scala入门到精通——第二十一节 类型参数(三)-协变与逆变

    本节主要内容 协变 逆变 类型通匹符 1. 协变 协变定义形式如:trait List[+T] {} .当类型S是类型A的子类型时,则List[S]也可以认为是List[A}的子类型,即List[S] ...

  5. 【数据库】兴唐第二十七节课之jdbc的使用

    使用jdbc修改数据库表中的信息 package java27practice;import java.sql.Connection; import java.sql.DriverManager; i ...

  6. 第二十一节:ADO层次上的海量数据处理方案(SqlBulkCopy类插入和更新)

    一. 简介 1. 背景: 虽然前面EF的扩展插件Z.EntityFramework.Extensions,性能很快,而且也很方便,但是该插件要收费,使用免费版本的话,需要定期更新,如果不更新,将失效, ...

  7. 【数据库】 兴唐第二十七节课只sql注入

    首先来一个用户登录程序 public static void login(String username, String password) {Connection conn = null;State ...

  8. 第二十一节(数组概要, 一维、二维数组的声明和使用,数组的排序,数组的查找,)...

    一维数组:1:/*数组:1. 数组是一种引用类型2. 数组是一种简单的数据结构,线性的机构3. 数组是一个容器,可以用来存储其他元素,4. 数组也是可以存储任意数据类型的元素5. 数组分为:一维数组, ...

  9. 重学java基础第二十一课:编译型和解释型

最新文章

  1. SQL 修改排序规则的问题 sql_latin1_general_cp1_ci_as
  2. 盘点谷歌、Facebook和IBM的重磅AI项目
  3. 求1 2 3 java_求1+2+3+...+n,Java代码实现
  4. 算法的优缺点_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)
  5. native react 更新机制_React Native 热更新实现(客户端 + 服务器端)
  6. Go基础-Go中的Println和Print和Printf之间的区别
  7. python网络安全宣传周_基于Python的IA分布式系统_吴芳
  8. Python max函数中key的用法
  9. 中国工业管理软件如何突围?
  10. 【书籍学习】MATLAB书籍\【chinapub】matlab教程一套电子书
  11. spring aop记录操作日志和错误日志
  12. 苹果的名字测试软件,教你iOS12人脸识别测颜值捷径安装使用教程及iPhone XR修改AppleID姓名教程...
  13. access的否定形式_雅思考试对于新手有多难?
  14. 哈佛专家推荐5种最健康食物
  15. Tensorflow C++接口部署python深度学习训练模型
  16. TiDB 在北京银行交易场景中的应用实践
  17. php substr 中文_php substr中文截取乱码解决办法
  18. 微信小程序返回上一页 没有上一页的情况下返回首页
  19. maven 国内源配置
  20. Axure 8.0 授权码

热门文章

  1. Blender三维建模和动画风格化的东方场景视频教程
  2. C语言网络编程:UDP通信实现
  3. Navicat新建查询快捷键
  4. from selenium.webdriver.support.ui import Select
  5. [LeetCode 120] - 三角形(Triangle)
  6. 判断dataset是否为空
  7. C#按关闭按钮实现最小化,按ESC才关闭的实现【含系统消息大全】
  8. 【OpenCV 】反向投影
  9. 深入理解PHP之OpCode
  10. PHP--isset()和unset()函数的用法