Java容器

在这里插入图片描述

Collection

Collection是什么?有哪些使用实例?

Collection是一个集合接口,它提供了对集合对象进行基本操作的通用方法,所有集合都是其子类,比如:List和Set。

一、List

ArrayList
在这里插入图片描述
ArrayList集合底层是由数组实现的,随着元素的增加而动态扩容(每次扩容50%),因其底层是动态数据,所以该集合是有序的,且可重复。线程不安全。

LinkedList
LinkedList底层是由链表来实现的,随着元素的增加在链表后端增加节点。有序且可重复。
Vector
出现在JDK1.0。
与ArrayList相比,后者效率更高,但是Vector能够保证线程安全。当然ArrayList也可以通过Collections.synchronizedList()实现线程安全。Vector使用较少。
Stack
Stack继承自Vector,用于实现后进先出。

二、Set

所有元素不允许出现重复。
HashSet
线程不安全,存取速度快。底层是以哈希表实现的。
TreeSet
红-黑树的数据结构,默认对元素进行自然排序(String)。

Map --> Map是什么数据结构?有什么子类?线程是否安全?

一、HashMap

存储的内容是键值对(key-value)映射。
HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket 里。当计算出的 hash 值相同旪,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 value。当 hash 冲突的个数比较少时,使用链表否则使用红黑树。
HashMap 允许key和value为null,线程不安全。如果要在多线程中使用map数据结构,可以使用ConCurrentHashMap(线程安全)。

二、HashTable

HashTable的key、value都不可以为null,此外,Hashtable中的映射不是有序的。
线程安全。是保留类,不建议使用。

三、TreeMap

TreeMap提供了一种以排序顺序存储键/值对的有效方法。它是基于红黑树的NavigableMap实现。
TreeMap是非同步的,它的iterator方法返回的迭代器是fail-fastl的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值