Java中的List,Set,Map

Collection

  • 接口
  • 集合类的上层接口
  • Set,List接口的父接口
    在这里插入图片描述

Map

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

Collections

  • 是一个集合框架的帮助类,包含一些对集合进行排序,序列化,搜索等操作的方法
    在这里插入图片描述

源代码里面含有各种方法:
在这里插入图片描述

  • 其作用域
    在这里插入图片描述

Q&A:

List,Map,Set的区别

  • List和Set都是储存单列数据,所以其本质都是继承Collection接口,Collection继承了Iterator接口
    Map是储存双列数据的集合
  • List和Set的区别在于,List中存储的数据有序且允许重复
    Set中元素在集合中的位置是由元素的hashcode来决定的,所以Set中元素是不可重复的,且数据无顺序。

List,Map,Set的实现类

List

在这里插入图片描述

Q&A:为什么数组的增删慢?

数组在内存中是在某一个区域里线性存储,所以对其进行删除和插入等操作会使得后面的数据前移或者后挪,这导致很花时间,但是线性存储,查找很快。

Map

在这里插入图片描述

Q&A:HashTable和HashMap

HashTable里的方法大多是synchronized,多个线程访问时不需要自己为它的方法实现同步,而HashMap需要

Set

在这里插入图片描述

HashSet实现基于HashMap
在这里插入图片描述

HashLinkedSet继承HashSet,基于LinkedHashMap实现
Q&A: 不是说LinkedHashSet实现基于LinkedHashMap吗,但是在查看源代码的时候发现,在LinkedHashSet中根本没有提到Map相关,只有四个构造方法,连add,delete等方法都没有?

首先,LinkedHashSet完全继承HashSet,其四个构造方法中都是super
在这里插入图片描述

而点进去查看的时候可以看到
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值