Collection、List、ArrayList、常见数据结构

集合与数组有什么不同?

  1. 数组的长度是固定的,不能变化。集合可以变化
  2. 内容不同
    1. 数组存储的同一种类型的元素
    2. 而集合可以存储不同类型的元素
  3. 元素的数据类型问题
    1. 数组可以存储基本数据类型,也可以存储引用数据类型
    2. 集合只能存储引用类型

不同的集合类数据结构不同

数据结构:就是数据的存储方式;

集合的继承体系

Collection、List、ArrayList、常见数据结构_ArrayList

java.utilCollection

Collection、List、ArrayList、常见数据结构_List_02

Collection的交集功能:

  • boolean retainAll(Collection c);  A对B做交集
    • 假设有两个集合A、B
    • A对B做交集,最终的结果保存在A中,B不变
    • 返回值表示的是A是否发生过改变
    • 功能解释:

集合的遍历:

其实就是依次获取集合中的每一个元素

  1. Object[ ] toArray :把集合转为数组,可以实现集合的遍历

  2. Iterator  iterator():集合迭代器,集合的专用遍历方式

    1. Object next():获取元素,并移动到下一个位置

    2. boolean hasNext();
      如果仍有元素可以迭代,则返回 true。(换句话说,如果 next 返回了元素而不是抛出异常,则返回 true)。
    3. Collection、List、ArrayList、常见数据结构_ArrayList_03

Collection、List、ArrayList、常见数据结构_ArrayList_04

迭代器为什么不定义成一个类,而是一个接口?

Collection、List、ArrayList、常见数据结构_Collection_05

Collection、List、ArrayList、常见数据结构_ArrayList_06

每个具体集合都有各自的iterator方法

List集合

list接口集合特点

有序的(存进去和取出来的顺序是一样的),可重复的

List接口的特有功能

Collection、List、ArrayList、常见数据结构_Collection_07

List集合的特有遍历功能(普通for循环)

Collection、List、ArrayList、常见数据结构_List_08

常见数据结构!

栈:先进后出

Collection、List、ArrayList、常见数据结构_List_09

队列:先进先出

Collection、List、ArrayList、常见数据结构_Collection_10

数组:查询快,增删慢

  • 存储同一种类型的多个元素的容器。有索引,方便我们的获取

Collection、List、ArrayList、常见数据结构_List_11

链表:查询慢,增删快

Collection、List、ArrayList、常见数据结构_Collection_12

红黑树:

生活中的树:

Collection、List、ArrayList、常见数据结构_ArrayList_13

计算机中的树(倒着)

Collection、List、ArrayList、常见数据结构_List_14

二叉树:分支不能超过两个

Collection、List、ArrayList、常见数据结构_Collection_15

排序树/查找树:

  • 类比:猜数字小游戏:1-100之间的数字,从50开始猜,一下减去一半

  • 在二叉树的基础上,元素是有大小顺序的;

  • 左子树小,右子树大

Collection、List、ArrayList、常见数据结构_Collection_16

平衡树:左孩子和右孩子相等

不平衡树:左孩子 != 右孩子

Collection、List、ArrayList、常见数据结构_ArrayList_17

红黑树

特点:趋近于平衡树,查询的速度非常快,查询叶子节点最大次数和最小次数不能超过2倍

  • 约束:
  1. 节点可以是红色的或者黑色的
  2. 根节点是黑色的
  3. 叶子节点(空节点)是黑色的
  4. 每个红色节点的子节点都是黑色的
  5. 任何一个节点到其每一个叶子节点的所有路径上 黑色节点数相同

Collection、List、ArrayList、常见数据结构_ArrayList_18

List的子类特点

ArrayList:

  • 底层数据结构是数组,查询快,增删慢
  • 线程不安全,效率高

Vector:

  • 底层数据结构是数组,查询快,增删慢
  • 线程安全,效率低

LinkedList:

  • 底层数据结构是链表,查询慢,增删快
  • 线程不安全,效率高

ArrayList集合:

1、去除集合中的重复值(字符串的内容相同)

Collection、List、ArrayList、常见数据结构_Collection_19

2、去除集合中自定义对象的重复值(对象的成员变量都相同)

Collection、List、ArrayList、常见数据结构_Collection_20

Vector集合:

LinkedList的特有功能

Collection、List、ArrayList、常见数据结构_ArrayList_21