list、set、map
List:有序,按对象进⼊的顺序保存对象,可重复,允许多个Null元素对象,可以使⽤Iterator取出所有元素,在逐⼀遍历,还可以使⽤get(int index)获取指定下标的元素
Set:⽆序,不可重复,最多允许有⼀个Null元素对象,取元素时只能⽤Iterator接⼝取得所有元素,在逐⼀遍历各个元素
Map: 无序,虽然是数组 + 链表的形式,但数组存放的顺序是hash值的顺序,而不是插入的顺序
删除list中所有的“a”
ArrayList arrayList = new ArrayList();
arrayList.add("a");
arrayList.add("b");
arrayList.add("a");
arrayList.add("a");
// 删除a 注意:需要倒着删
for(int i = arrayList.size()-1;i>=0;i--){
if(arrayList.get(i).equals("a")){
arrayList.remove(i);
}
}
ArrayList初始容量10,扩容1.5倍
HashMap 初始化大小是 16 ,扩容因子默认0.75(可以指定初始化大小,和扩容因子)
ArrayList
Collections.sort(arratList) 升序排序 // 实现compareble接口重写conpare()方法
去重 Hashset(无序)、LinkedHashSet(有序)
LinkedHashSet linkedHashSet = new LinkedHashSet(arrayList);
ArrayList arrayList1 = new ArrayList(linkedHashSet);
for判断remove()/contain()
HashMap
1. jdk8之后数组+链表+红黑树,在第一次调用put()时创建数组。
2. hashmap的put()插入hash表分为三种情况:(对键key进行hashcode()得到hash值(int))
① hash值不同 数组++
② hash值相同 键内容equls()不同 链表++
③ hash值相同 键内容equls()相同 覆盖原键-> value
3. 当链表长度大于8并且数组长度大于64转为红黑树。