java基础学习复习之路(十)---数据结构相关、HashSet、List

1、常见的数据结构

1. 栈       先进后出
2. 队列     先进先出
3. 数组
   查询快:数组的地址是连续的,我们可以直接通过数据的首地址来找到数组,通过索引查询数据元素          
   增删慢:数组的长度是固定的,想要增加或者删除某个元素,最好的是创建一个新的数组来转移内容。
   在堆内存中频繁的创建数组,转移数组元素,销毁数组,效率低下
4. 链表
   查询慢:地址不是连续的,每次查询元素必须从头开始
   增删块:链表中的每一个元素也称为一个数据源
          一个节点包含了一个数据源
          增加/删除 对链表的整体结构没有影响,只需要改变指向地址便可
5. 红黑树:也就是一颗二叉树,他能有效的的提高查询效率

红黑树:
在这里插入图片描述

2、List

List常用的实现类

2.1、LinkList

里面含有大量操作首尾数组的方法

2.2、ArrayList

遍历快,增删慢
大小可变的数组实现

3、Set

与List不同的是它不允许重复
同时他没有索引

3.1、HashSet

1、它继承Set接口
2、是一个无序的集合,存储元素和取出元素的顺序可能不一致
3、底层实现是一个哈希表(查询速度非常快)
存储特点:通过哈希值存储
在这里插入图片描述

3.2、HashSet存储自定义对象

如果我们定义一个学生,要求学号相同和姓名相同的就是同一个人
这时候如果直接存储在HashSet中,他们默认是不同的
这时候需要重新写入hashCode()和equals()方法,来保证不重复

3.3、LinkHashSet

LinkHashSet 是一继承了HashSet的类
它的特点:

  1. 它是一个双链表结构
  2. 它的结构是:(数据+链表/红黑树)+ 链表
  3. 它多出来呢的一个链表用来记录元素的存储顺序,保证有序这个是他与HashSet最大的不同

4、哈希表

object有个方法 hashCode()
就是可以获得对象的哈希值

下面就是哈希表的一点理解
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值