Collection接口和Map接口

Java的集合类主要是从两个接口派生出来的,Collection和Map。

Collection接口

Collection是一个接口
它的父接口是Iterable
子接口有:List,Set,Queue,Deque,BeanContext,BeanContextServices,BlockingDeque,BlockingQueue,NavigableSet,SortedSet,TransferQueue
实现类有:AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentHashMap.KeySetView, ConcurrentLinkedDeque, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector

Collection是层次结构中的根接口,也是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。
一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。

Collection和Map的继承体系图:
Collection接口和Map接口_第1张图片
Collection接口和Map接口_第2张图片
Collection接口和Map接口_第3张图片

Collection接口是List、Set和Queue接口的父接口,定义了如下操作集合元素的方法:

  • boolean add(E e): 该方法用于向集合添加一个元素。如果集合对象被添加操作改变了,则返回true
  • boolean addAll(Collection c): 该方法把集合c里的所有元素添加到指定集合里。如果集合对象被添加操作改变了,则返回true
  • void clear(): 清除集合里的所有元素,将集合长度变为0
  • boolean contains(Object o): 集合中是否包含指定元素
  • boolean containsAll(Collection c): 返回集合里是否包含集合c里的所有元素
  • boolean isEmpty(): 返回集合是否为空,当集合长度为0时返回true,否则返回false
  • Iterator iterator(): 返回一个Iterator对象,用于遍历集合里的元素
  • boolean equals(Object o): 比较o与这个集合是否相等
  • int hashCode(): 返回这个集合的哈希值
  • boolean remove(Object o): 删除集合中的指定元素o,当集合中包含了一个或多个元素o时,该方法只删除第一个符合条件的元素,该方法将返回true
  • boolean removeAll(Collection c): 从集合中删除集合c里包含的所有元素(相当于调用该方法的集合减集合c),如果该操作改变了调用该方法的集合,则返回true
  • boolean retainAll(Collection c): 从集合中删除集合c里不包含的元素(相当于得到调用该方法的集合和集合c的交集),如果该操作改变了调用该方法的集合,则该方法返回true
  • int size(): 该方法返回集合里元素的个数
  • Iterator iterator():返回这个集合的迭代器(因为其中一个返回值为Iterator类型的iterator()方法,所以java.util.Collection接口必须继承java.lang.Iterable接口)
  • Object[] toArray(): 该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素
  • T[] toArray(T[] a): 返回一个包含所有元素的数组,the runtime type of the returned array is that of the specified array.

注意:相等的对象应该具有相等的hashCode。容器类对象在调用remove,contains等方法时需要比较对象是否相等,这回涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要重新equals和hashCode方法以实现自定义的对象相等规则。

你可能感兴趣的:(集合类)