北大青鸟java培训:Java中最常用的集合类框架?

Python012

北大青鸟java培训:Java中最常用的集合类框架?,第1张

一、HashMap的概述    HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构。

   HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作。

甘肃电脑培训http://www.kmbdqn.cn/发现存储的是对的映射,允许多个null值和一个null键。

但此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

 除了HashMap是非同步以及允许使用null外,HashMap类与Hashtable大致相同。

此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。

迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。

所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

HashMap的实例有两个参数影响其性能:初始容量和加载因子。

容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。

加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。

当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。

    通常,默认加载因子(0.75)在时间和空间成本上寻求一种折衷。

加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数HashMap类的操作中,包括get和put操作,都反映了这一点)。

在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少rehash操作次数。

如果初始容量大于最大条目数除以加载因子,则不会发生rehash操作。

注意,此实现不是同步的。

如果多个线程同时访问一个HashMap实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。

这通常是通过同步那些用来封装列表的对象来实现的。

但如果没有这样的对象存在,则应该使用{@linkCollections#synchronizedMapCollections.synchronizedMap}来进行“包装”,该方法最好是在创建时完成,为了避免对映射进行意外的非同步操作。

Mapm=Collections.synchronizedMap(newHashMap(...))  二、构造函数HashMap提供了三个构造函数:HashMap():构造一个具有默认初始容量(16)和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity):构造一个带指定初始容量和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity,floatloadFactor):构造一个带指定初始容量和加载因子的空HashMap。

这里提到了两个参数:初始容量,加载因子。

这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。

对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。

系统默认负载因子为0.75,一般情况下我们是无需修改的。

HashMap是一种支持快速存取的数据结构,要了解它的性能必须要了解它的数据结构。

集合类型主要有3种:set(集)、list(列表)和map(映射)。

1、List(有序、可重复)

List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。

2、Set(无序、不能重复)

Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

3、Map(键值对、键唯一、值不唯一)

Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

扩展资料:

JAVA集合类型四种常见输出方式:

1、Iterator:迭代输出,是使用最多的输出方式。

2、ListIterator:是Iterator的子接口,专门用于输出List中的内容。

3、foreach输出:JDK1.5之后提供的新功能,可以输出数组或集合。

4、for循环。

代码示例如下:

for的形式:for(int i=0i<arr.size()i++){...}

foreach的形式: for(int i:arr){...}

iterator的形式:

Iterator it = arr.iterator()

while(it.hasNext()){ object o =it.next()...}

参考资料来源:百度百科:java集合类

Java集合是什么:

Java 中的集合类库可以帮助我们在程序设计中实现传统的数据结构。

Java的集合类是一个用来存放对象的容器,有以下特点:

1、Java集合只能存放对象。加入添加了一个基本数据类型,会被自动装箱后存入集合。

2、集合存放的是多个对象的引用,对象本身是在堆内存中的。

3、集合可以存放不同类型,不限数量的数据类型。

集合分三种:1、Set 2 、List 3、Map,下面进行具体介绍。

扩展链接:

主要内容:

1)手写ArrayList

2)手写单链表

3)手写LinkedList

4)手写HashMap

5)手写HashSet

6)最新并发集合类

学习目标:

1. 掌握手写ArrayList

2. 掌握手写单链表

3. 掌握手写LinkedList

4. 掌握手写HashMap

5. 掌握手写HashSet

6. 理解最新并发集合类底层原理

视频课程小结:

01_集合提升训练_手写ArrayList_get_size_isEmpty_自定义异常

02_集合提升训练_手写ArrayList_构造方法_add

03_集合提升训练_手写ArrayList_toString_iterator

04_集合提升循环_手写单链表_get

05_集合提升训练_手写单链表_add_remove_toString

06_集合提升训练_手写LinkedList

07_集合提升训练_手写LinkedList_添加内存分配图

08_集合提升训练_HashMap的原理和代码准备

09_集合提升训练_手写HashMap的put

10_集合提升训练_手写HashMap的get_toString

11_集合提升训练_手写HashSet

12_集合提升训练_新一代并发集合类