ArrayList
特点:是有序(按照添加顺序来算的),不唯一
底层是基于Object类型的数组
一次性添加一个元素:list.add();
一个集合中是否包含某个元素:list.contains(元素);只不过要遵循equals()方法
删除集合中的元素:分为两种,list.remove(下标) list.remove(元素);
当list.remove(元素);的时候要遵循equals方法
当遍历一个集合时有三种方法:
for+下标
for+each
迭代器
ArrayList的构造方法:
参数:int类型 指的是空间大小
默认参数 默认分配10个空间大小,并且如果超过容量则扩大容量
设定参数 根据指定的参数来分配空间大小,如果超出容量则扩大容量
参数扩容的版本:JDK6.0之前 x*3/2+1 JDK7.0之后 x+(x>>1)
HashSet
特点:无序,唯一
底层基于哈希表
添加一个元素
set.add(元素);
因为HashSet的唯一性,所以需要遵循hashCode() == equals()方法
判断一个集合中是否包含一个元素
set.contains(元素);
因为HashSet的唯一性,所以需要遵循hashCode() == equals()方法
删除一个元素
因为hashCode是一个无序集合,所以没有下标,与下标有关的方法都不能使用
set.remove(元素);
需要遵循 hashCode() == equals()方法
遍历一个set集合的方法
for+each
迭代器
HashSet的构造方法
参数:int 分组组数 Float 加载因子
默认参数 默认分配16个组,加载因子0.75F,每个组分配12个空间
组数一般都是按照2的n次方来计算
设定参数 分配特定的分组数,特定的加载因子,阈值=分组数 *加载因子,阈值就是每个组的空间大小,当一个组的元素个数超出一个组的空间大小时,就要扩容,扩容方式就是按照2倍扩容
如果第二次输入的元素和第一次输入的元素相同时,则删除第二次输入的元素