容器
容器API
两个对象equal时,两个对象的hashcode相等
Set
没有顺序且不可以重复
HashSet
哈希表(数组+链表)
List
有顺序且可以重复(两个对象直接回想的equal,就算重复)
ArrayList
数组结构
LinkList
链表结构
Map
键值对
是否包含某个对象,也是是否equal
Collection中装的必须都是Object对象
当对象在Map中作为键使用,当做引用时,使用hashCode判断是否相等,hashCode效率更高
重写equal对象应该重写hashCode方法
Iterator(迭代器)
统一的遍历Collection中元素的方法(类似一个指针,指向元素的左边)
返回值1.5之后是泛型E,1.5之前是Object
增强for循环
Set
TreeSet用树实现的
List(会不断的改变容量大小)
常用算法
binarySearch为二分法查找(折半查找)
如何选择数据结构
Array是数组,内存空间是连续的,直接偏移,读很快,改需要把前面的数据复制成新的数组,
改完再复制回去,改的慢
Linked是链表,内存空间不连续,读很慢,改直接更改链表的指向,改的块
Hash基本不再使用了
Map
不能重复依然是比较equal,比较equal比较麻烦,一般比较hashcode比较方便
put返回的object为通过key复制到原value后,原value返回所以使用object
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步