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

被折叠的 条评论
为什么被折叠?



