Collection存在集合中的共性方法,也是集合中的父类,请参考集合关系表,(图片来源于网络)
---|Collection: 单列集合
---|List: 有存储顺序, 可重复
---|ArrayList: 数组实现, 查找快, 增删慢
由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快
---|LinkedList: 链表实现, 增删快, 查找慢
由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增效率较高但查询低
---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低
和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低
---|Set: 无存储顺序, 不可重复
---|HashSet
---|TreeSet
---|LinkedHashSet
---| Map: 键值对
---|HashMap
---|TreeMap
---|HashTable
---|LinkedHashMap
增加:
1:add() 将指定对象存储到容器中
add 方法的参数类型是Object 便于接收任意对象
2:addAll() 将指定集合中的元素添加到调用该方法和集合中
删除:
3:remove() 将指定的对象从集合中删除
4:removeAll() 将指定集合中的元素删除
修改
5:clear() 清空集合中的所有元素
判断
6:isEmpty() 判断集合是否为空
7:contains() 判断集合何中是否包含指定对象
8:containsAll() 判断集合中是否包含指定集合
使用equals()判断两个对象是否相等
获取: 9:int size() 返回集合容器的大小
转成数组10: toArray() 集合转换数组
public static void main(String[] args) {
Collection list1 = new ArrayList();
list1.add("北京海淀");
list1.add("山东青岛");
list1.add("浙江杭州");
list1.add("广东广州");
System.out.println(list1);
Collection list2 = new ArrayList();
list2.add("java");
list2.add(list1);
list2.addAll(list1);
System.out.println(list2);
System.out.println(list2.size());
Boolean remove1 = list1.remove("北京海淀");
if(remove1){
System.out.println("删除成功");
System.out.println(list1);
System.out.println(list2);
}
}
由此可见。add(list1)是将整个list1集合当做一个对象,addAll(list1),是将list1中的每一个元素当做list2中的一个元素
当删除list1中的一个元素时,list2中的list1对象也会删除一个元素,但是使用addAll()方法添加的元素不会被删除