java 中的数据结构

来源:互联网 发布:网络直播十大灵异事件 编辑:程序博客网 时间:2024/04/26 19:54

List下的常用实现类

1.ArrayList

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null 在内的所有元素。其数据结构为Object数组。初始化时若有指定容量则指定为指定容量,否则调用无参构造创建一个默认容量为10的Object空数组,容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。其数组最大的容量为Integer.MAX_VALUE - 8。因此此类查找以及修改指定位置的元素效率较高,但是删除和增加需要移动元素而效率较低。


2.LinkedList

其数据结构是用node节点实现的双向链表。其增删改查都是对链表进行操作,因此删除与增加效率较高。该类除了实现了List<E>接口,还实现了Deque<E>接口,为 addpoll 提供先进先出队列操作,以及其他堆栈和双端队列操作。

Map下常用的实现类

1.HashMap
使用了Entry<K,V>的键字对的形式作为了数据结构。允许使用 null 值和 null 键。
且使用了hash函数对Key值进行Hash返回一个int型的hash值作为通过指定key值查找相应的value的索引。
实例有两个参数影响其性能:初始容量 和加载因子容量 是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。  

2.Hashtable
除了不允许空值作为key值,和是同步的之外其余方法的特点与HashMap相同。
其hash函数的实现与hashmap不同。
且此类是实现同步的方法是让整个方法变为同步方法。所以效率很低。

Set下常用实现类

1.HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。此类允许使用 null 元素。
其底层的数据结构就是hashmap的数据结构,且hash函数以及应用也相同。
其余hashmap的不同之处为该实现的类的所有映射中的value值都是相同的,所存储的就是key值,因此该实现所存储的元素不能重复。

0 0
原创粉丝点击