collection有两个接口
List(列表) Se(集)
List:可存放重复元素,元素的存取是有序的
Set:不可存放重复元素,元素的存取是无序的,先判断hashCode是否相同,如果不同,可以存放,如果相同,在判断equals方法是否相同,因此即使equals相同,但如果hashCode不同,也能添加,跟是否同一对象无关
一 List与ArrayList
List是一个接口,ArrayList继承并实现了List;
1.ArrayList是数组是线程不安全的,因为在List中,可以插入String类型"abc"这样的字符串,也可以插入int类型123这样的数字,我们处理这些数据的时候,很有可能报数据不匹配的错误。在使用的时候需要转换为对应的原型进行处理,就是存在装箱和拆箱的操作,会带来很大的性能损耗
优点:
1.添加(add),删除(Remove),插入(Insert)操作很方便,采用动态扩容,不需要定义数组的长度,可以通过数组下标直接查询到元素,查询速度快
修改、速度快
缺点:线程不安全,有可能会产生数据不匹配错误,性能损耗大。
二 LinkedList集合
1.LinkedList底层通过链表来实现,随着元素的增加,不断向后端增加节点
2.LinkedList是一个双向链表,每一个节点都拥有前后节点的引用,相对于ArrayList来说,LinkedList随机访问效率更低
优点:链表结构,增、删速度快
三 List的用法
list.add();添加对象 注意add(int index,Object obj );向指定索引位置添加对象
list.get() 获取方法
list.remove(index);删除方法 按照索引删除
remove(Object o);按照元素的内容删除
list.set(index,element);替换原来位置上的字符
list.add(index,element);将添加的防盗索引位置,原来的数据下移
list.indexOf();判断 元素的索引
list.isEmpty();判断list是否为空,空则返回true,否则返回false