常用集合
Collection常用方法
add()添加
remove()移除
isEmpty()是否为空
contains()元素是否存在
toArray()转数组
iterator()迭代器
ArrayList
可变数组,元素有序,可重复
初始长度为10,当容量不够时自动扩容为当前的1.5倍,10,10*1.5,10*1.5*1.5....
底层为数组,在执行增加或者删除操作的时候会创建新数组,效率不高,但得力于下标的设计,查询速度很快,适用于查询较多的环境,*查询块增删慢
LinkedList
底层为链表,元素有序,可重复
除首位节点,每个节点都只知道相邻两节点的位置,在增加和删除时有较高的效率,*查询慢,增删较快
Set
无序,元素不能重复,当存储类型为自定义的类时,需要重写类中的toString()、HashCode()、equal()方法
public class MyTest {
public static void main(String[] args) {
HashMap<Character, Integer> map = new HashMap();
//键盘输入一串字符
String str = new Scanner(System.in).nextLine();
for (int i = 0; i < str.length(); i++) {
//根据key判断字符是否出现过,若第一次出现则以 key,1的形式加入
if (!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}else{
//若出现过则获取对应key的value值+1,再重新赋值(),重复的key会覆盖之前的value
int i1 = map.get(str.charAt(i)) + 1;
map.put(str.charAt(i),i1);
}
}
System.out.println(map);
}
}
HashMap
底层是Entry[K,V]数组,初始容量为16,当使用量达到75%自动扩容为原来约2倍
Key值唯一不能重复,Value可以
存储时表现为 hash(K) % n 放在余数的位置 当取余重复时,一链表形式挂在位置后面
Entry[K,V]数组长度
当Entry[K,V]数组大于64且链表长度大于8 会转化为红黑树,提高查询效率