带你深入了解Java!十三、集合框架(一)!

< 集合框架(一) >

在Java程序中如何存储数据:
变量
数组:1、长度不能改变 2、数据类型单一(吃货联盟,为了存储订单信息、菜单信息,定义了n个数组)
类和对象(实体)
对象数组:它在一定程度上解决了数据类型单一的问题
在这里插入图片描述

一、了解Java集合框架体系结构

底层时数组结构
在这里插入图片描述
长度不可变问题!
下次课是为了解决更复杂的数据存储问题。

  • 实现可变数组:
    定义不同数组、长度随便指定一个
    当有数据需要插入式,判断当前长度是否足够存储数据,如果不够创建新的数组
    Arrays.copyOf(arr,length);
    将新数组返回

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工具类
Cdlections
Arrays
在这里插入图片描述

二、会使用ArrayList存储数据

在这里插入图片描述
ArrayList<存储的数据的类型> 集合名 = new ArrayList<存储的数据类型>();

  • 1、 boolean add(Object object); 向列表中追加元素
  • 2、 void add(int index,Object obkect); 向列表中的指定索引添加元素
  • 3、 int size(); 获取列表胀肚/元素个数
  • 4、 Object get(int index); 根据索引获对应的元素
  • 5、 boolean contains(Object ob); 判断是否包含某个元素
  • 6、 boolean remove(Object ob); 删除指定元素
  • 7、 Object remove(int index);根据索引删除元素 且返回被删除的元素值

来自于ArrayList的父级接口们

  • toArray()转换为数组
  • clear() 清除所有元素
  • isEmpty()判断是否为空集合 / list.size == 0
  • iterator()迭(die)代器
    (数据类型…名) 可变形参

    集合泛型特点:它是用来约束/声明集合元素的数据类型的。
  • 泛型必须是引用数据类型,如果存储基本数据类型值,则必须将转其为对应引用数据类型(包装类型)
    在这里插入图片描述

三、 会使用LinkedList存取数据

底层是链表结构(双向链表)
LinkedList <存储的数据类型> 集合名 = new LinkedList <存储的数据类型>();
在这里插入图片描述
在这里插入图片描述

四、了解ArrayList和LinkedList的区别(面试题)

  • ArrayList:
    底层是数组结构,所以因为是数组,则拥有索引,在遍历或查找时比较快,但是又因为时数组,数组长度不可变,每一次增删都要创建新的数组,比较慢。
  • LinkedList:
    底层时链表结构,链表结构每一个元素由两部分组成,数据域和指针域,他没有索引。多个元素之间,通过指针域指向连接,因为没有索引,所以 查找比较慢,但是因为链表所以在 增删 时只需要切换指针指向即可(尤其首位更 快 )
  • 在我们使用时,发现ArrayList和LinkedList好像都拥有索引,为什么呢?

他们的索引不同!

  • ArrayList的索引是固定的。类似于座位号
  • LinkedList的索引是根据元素位置计算出来的,并非固定。找到第16个座位

五、 掌握使用Set集合存取数据

无序 唯一
HashSet
在这里插入图片描述
其实它是实现唯一是根据hasCode()和equals()来做的比较

集合的遍历

在这里插入图片描述
在这里插入图片描述

笔记

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链表

单向链表
在这里插入图片描述
双向链表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 6080496 查看本文章

猜你喜欢

转载自blog.csdn.net/Gastby98/article/details/89424944