1.1 Arraylist、hashmap、hashSet等原理

本文深入解析Java集合框架中的关键组件,包括ArrayList、Vector、HashMap、LinkHashMap和HashSet的原理、工作方式及特性。详细探讨了它们在扩容机制、线程安全、哈希算法应用等方面的区别,以及如何在实际开发中合理选择使用。

ArrayList原理是数组,通过System.arrayCopy进行扩容。

Vector原理也是数组,类型ArrayList,但是扩容时容量增加一倍,并且方法中增加Synchronized进行同步

HashMap原理也是数组,通过key的hashCode在进行hash算法,计算出数组下标,如果不同key计算出来的hash值出现碰撞,数组下标一样,则用链表来关联。

LinkHashMap则基于HashMap,但是由采用了双向链表,从而实现有序的遍历,插入删除快,但是读写慢

HashSet原理也是基于HashMap,只不过value是一个固定的空对象

附hash算法,比如String,先进行散列,当前元素的hash值为前面的元素的hash值乘一个素数,比如31,再加当前元素值,然后一直累加上去。目前各种还没有一个完美的hash算法适合所有数据类型,比如流数据,图像等

String 原理是final类型的char数值,连接字符串时会生成多个对象,StringBuilder原理char,拼接字符串通过System.arrayCopy进行复制和数组扩容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值