集合:集合是存储对象数据的集合容器。
集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
单列集合体系:
---------| Collection 单例集合的根接口
------------| List 如果是实现了List接口的集合类, 具备的特点:有序,重复。
---------------| ArraryList 底层 是使用了Object数组实现的,特点: 查询速度快,增删慢。
---------------| LinkedList 底层是使用了链表数据结构实现 的, 特点: 查询速度慢,增删快。
---------------| Vector Vector的实现与ArrayList是一致,但是是线程安全 的,操作效率低。 jdk1.0的时候出现的
------------| Set 如果是实现了Set接口的集合类,具备的特点:无序,不可重复。
----------------| HashSet 底层是使用了一个哈希表支持的, 特点:存取速度快。
----------------| TreeSet 底层是使用了红黑树(二叉树)数据结构实现的, 特点:会对元素进行排序存储。
凡是容器都具有增删改查的功能和对应的方法。
collection接口中的方法:
增加:
boolean add(E e) 确保此 collection 包含指定的元素(可选操作)。
boolean addAll(Collection<? extends E> c) 将指定
collection 中的所有元素都添加到此 collection 中(可选操作)。
删除:
void clear() 移除此 collection 中的所有元素(可选操作)。
boolean remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
查看:
int size() 返回此 collection 中的元素数。
判断:
boolean isEmpty() 如果此 collection 不包含元素,则返回 true。
boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
迭代:
Object[] toArray() 返回包含此 collection 中所有元素的数组。
Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。
迭代器的方法:
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。只能用在调用next方法之后,否则会报异常:java.lang.IllegalStateException
代码示例如下:
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.Collection; 4 import java.util.Iterator; 5 6 public class DemoCollection { 7 8 public static void main(String[] args) { 9 //加入 10 Collection<String> collection = new ArrayList<String>(); 11 System.out.println("加入元素是否成功?"+ collection.add("张三")); 12 collection.add("李四"); 13 System.out.println("add之后的collection"+collection); 14 15 Collection<String> collection2 = new ArrayList<String>(); 16 collection2.add("王五"); 17 collection2.add("赵六"); 18 collection.addAll(collection2); 19 System.out.println("addAll之后的collection"+collection); 20 //删除 21 System.out.println("删除是否成功?"+collection2.remove("赵六1")); 22 System.out.println("删除是否成功?"+collection2.remove("赵六")); 23 System.out.println("remove之后的collection2"+collection2); 24 System.out.println("删除是否成功?"+collection.removeAll(collection2)); 25 System.out.println("removeAll之后的collection"+collection); 26 27 Collection<String> collection3 = new ArrayList<String>(); 28 collection3.add("赵六"); 29 System.out.println("删除是否成功?"+collection.retainAll(collection3)); 30 System.out.println("retainAll之后的"+collection); 31 32 collection2.clear(); 33 System.out.println("clear之后的collection2?"+collection2); 34 //查看 35 System.out.println("collection的元素个数:"+collection.size()); 36 //判断 37 System.out.println("collection时候为空?"+collection.isEmpty()); 38 System.out.println("collection是否包含赵六?"+collection.contains("赵六")); 39 System.out.println("collection是否包含collection3?"+collection.containsAll(collection3)); 40 //迭代 41 Object[] array = collection.toArray(); 42 System.out.println(Arrays.toString(array)); 43 44 Iterator<String> iterator = collection.iterator(); 45 while (iterator.hasNext()) { 46 System.out.println(iterator.next()); 47 } 48 49 Iterator<String> iterator2 = collection.iterator(); 50 iterator2.next(); 51 iterator2.remove(); 52 System.out.println("collection中的"+collection); 53 } 54 55 }