集合的基本描述

集合本身是一个对象,也有内存地址,存储的也是一个对象引用。集合可以套集合。

不能存储java对象,不能存储基本数据类型,这两个是通过自动包箱。

什么时候用什么集合,懂得它们的底层是什么数据结构,掌握用法即可

比如: new ArrayList();创建一个集合,底层是数组

new LinkedList();创建一个集合对象,底层是链表

new TreeSet();创建一个集合对象,底层是二叉树

集合包名:

java.util.*; 所有的集合类和集合接口都在java.util包下

集合继承结构图:需牢牢掌握

在java中集合分为两大类:

需要注意的是,我们的集合不止以下几种,还有很多,只是开发常用这几种

一、单个方式存储元素:

单个方式存储元素,这一类集合中超级父接口:java.util.Collection

Collection 继承了Iterable父接口,Iterable这个接口有一个iterator方法,Collection可以使用它,该方法返回的是一个Iterator迭代器对象,用来遍历集合的元素

Collection 其中两个子接口需要我们掌握:

List、Set

List: 存储特点:有序可重复,存储的元素有下标,有序实际上是指存进去是这个顺序,取出来还是这个顺序,并不是说是按照大小排序的有序。是针对于存取顺序一致,类似于排队。

LIst接口下面有两个类,ArrayList类、LinkedList类、Vector类

ArrayList类:底层采用数组的数据结构,查询快,有下标,非线程安全的,底层是相当于Object数组

LinkedList类:底层采用双向链表数据结构,增删改除效率更快

Vector类:底层是Object数组,线程安全的,效率低,几乎不用,现在保证线程安全有别的方案

Set:存储特点:无序不可重复,无序表示存进去是这个顺序,取出来就不一定是这个顺序了,

另外Set集合中元素没有下标。Set集合中的元素不能重复。

Set下面有两个类,HashSet,TreeSet

HashSet:底层是hashmap,在源码中创建的hashset其实是new了一个hashmap

向hashset存储数据,实质上是以键值对,Key,Value存储到了hashmap中,而hashmap底层是一个哈希表数据结构

TreeSet:Collection接口---->Set接口---->SortedSet-接口--->实现类TreeSet

SortedSet集合存储元素的特点:

由于继承了Set集合,所以也是无序不可重复,但是放在SortedSet集合中的元素可以自动排序,我们称为可排序集合

TreeSet集合底层实际上是TreeMap,new TreeSet集合的时候,底层实际上new了一个TreeMap集合。

往TreeSet集合中放数据的时候,实际上是将数据放在了TreeMap集合中了。

源码:,add(E e)添加元素,实际上是调用了map的put方法

而TreeMap集合底层采用的是二叉树数据结构

二、 以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map;

<Interface>Map集合,Map没有父接口,跟Collection接口没有关系,独立的一个接口集合。

以Key和Value这种键值对的方式存储元素;key和Value都是存储java对象的内存地址

所有Map集合的key特点:无序不可重复

其实Map集合中的所有的Key都是set集合

Map下面的接口:SortedMap接口

接口Map--->接口SortedMap--->实现类TreeMap

SortedMap集合的key存储元素的特点:

首先是无序不可重复的,另外放在SortedMap集合key部分的元素会自动按照大小顺序排序,称为可排序的集合

Map下面的实现类:

HashMap、Hashtable,TreeMap

HashMap:非线程安全,底层是哈希表,单向链表+数组+红黑树

Hashtable:线程安全,底层也是哈希表,效率低不用

Hashtable---->属性类:Properties,继承Hashtable线程安全,另外properties存储元素的时候

也是采用key和value的形式存储,并且key和value只支持String类型,不支持其他类型。开发会用。

TreeMap:底层是二叉树

可排序的--->SortedSet,SortedMap(key)。共同特点:无序不可重复

总结:
List:有序可重复,有数组下标
ArrayList: 底层是数组,查询效率高,增删改除效率低

Collection接口--->List接口--->ArrayList类

LinkedList:底层是双向链表,增删改除效率高,查询慢

Collection接口--->List接口--->LinkedList类

Vector:底层是数组,线程安全,效率低,用的少

Collection接口--->List接口--->Vector类

Set(Map的key部分):无序不可重复,没有数组下标
HashSet:底层是hashmap,哈希表,非线程安全,放在HashSet集合中的元素相当于放在了hashmap集合中

Collection接口--->Set接口--->HashSet类

TreeSet:底层是TreeMap,二叉树,放在treeset集合中元素可按照大小自动排序

Collection接口--->Set接口--->SortedSet接口---->TreeSet类

Map:key无序不可重复
HashMap:底层是哈希表

Map接口--->HashMap类

TreeMap:底层是二叉树,TreeMap集合的key和value可自动按照大小排序

Map接口--->SortedMap接口--->TreeMap类

Hashtable:底层是哈希表数据结构,线程安全,效率低,有一个属性类,properties开发常用

Map接口--->Hashtable类

Properties:Hashtable的属性类,线程安全,采用key和value存储,并且key和value只能是String类型

Map接口--->Hashtable类-->属性Properties
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值