集合的数据结构和特点

单列集合与双列集合的特点以及数据结构

单列集合
Collection接口下的两个接口

List接口:
特点:有序(有序指的是存储的顺序与取出来的顺序是一样的)、元素可重复、有索引。
数据结构:底层数据结构是数组。

Set接口:
特点:无序(无序指的是存储的顺序与取出来的顺序是不一样的)、元素不能重复,无索引。
数据结构:哈希表。
是如何保证数据唯一的:先比较hashCode值,如果hashCode值不一样就存储,如过hashCode值一样就用equals再次判断,如果equals判断的值不一样就存储,一样就不存储。

哈希表存储机制看下图:jdk1.8及其以后哈希表由(数组+链表+红黑树)组成
在这里插入图片描述

List接口下的两个实现类:

ArrayList:
特点:有序(有序指的是存储的顺序与取出来的顺序是一样的)、元素可重复、线程不同步、有索引。
数据结构:底层数据结构是数组、查询快,增删慢。

LinkedList:
特点:有序(有序指的是存储的顺序与取出来的顺序是一样的)、元素可重复、有索引。
数据结构:链表结构>>>双向链(prev前指针域 e参数 next后指针域)、增删快、查询慢

LinkedList中的add方法添加元素源码介绍:
在这里插入图片描述

Set接口下的三个实现类:

HashSet:
特点:无序(无序指的是存储的顺序与取出来的顺序是不一样的)、元素不能重复、无索引。
数据结构:哈希表。
方法功能实现:HashSet方法的功能实现是基于HashMap实现的。
保证数据唯一性:hashCode 和 equals

LinkedHashSet:
特点:有序(有序指的是存储的顺序与取出来的顺序是一样的)、元素不能重复、无索引。
数据结构:哈希表+链表>>>双链表(prev前指针域 e参数 next后指针域)双向链可以保证存储有序
保证数据唯一性:hashCode 和 equals

TreeSet:
特点:自动按照自然顺序排序还可以使用带参构造传入Comparator指定排序规则、无索引
数据结构:红黑树
保证数据唯一性:hashCode 和 equals

双列集合
Map接口下的三个实现类
特点:以 key:value 的形式存储数据、无索引、无序、键不能重复、值可以重复。
数据结构:哈希表。
如何判断数据唯一:是如何保证键唯一的:键需要重写HashCode和equals 判断过程和HashSet一样。
注意:Map的键和值是可以存储null的。

HashMap:
具有父类的所有特点。

LinkedHashMap:
特点:有序的 、具有父类的所有特点。
数据结构:哈希表 + 链表>>>双向链(prev前指针域 e参数 next后指针域)。

TreeMap:
特点:按照自然顺序排序。
数据结构: 红黑树结构 (效率高)
构造方法:
空参构造>>>可以针对key进行自然排序。
带参构造>>>在有参构造中传入Comparator对指定规则排序。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值