容器

容器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

原文地址:https://www.cnblogs.com/ChengR/p/13047594.html