概述

集合类又被称为容器,数组也算是个容器,集合类和数组的区别就是:数组的长度是固定的,集合的长度是可变的,数组是用来存放基本类型的数据,集合用来存放对象的引用。
常见的集合有List集合、Set集合和Map集合。如下图:

Collection接口

常用的一些方法

  • add(E e)方法:将指定的对象添加到该集合中
  • remove(Object o)方法:将指定的对象从该集合中移除
  • isEmpty()方法:返回boolean值,用于判断当前集合是否为空
  • iterator()方法:返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
  • size()方法:返回int型值,获取该集合中元素的个数

    List集合

    List集合包括List接口以及List接口的所有实现类。

    List接口

    List接口继承了Collection接口,包含Collection中的所有方法,另外,List接口还定义了两个重要的方法

  • get(int index):获得指定索引位置的元素

  • set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象

    List接口的实现类

    List接口的常用实现类有ArrayList和LinkedList
    ArrayList:此类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或删除对象的速度较慢
    LinkedList:此类采用链表结构保存对象,这种结构的优点是便于向集合中插入和删除 对象,需要向集合中插入、删除对象的时候,使用LinkedList类实现的List集合的效率更高,但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较低
    1. //使用ArrayList、LinkedList类实例化List集合
    2. List<E> list=new ArrayList<>();
    3. List<E> list=new LinkedList<>();

Set集合

Set集合中的对象不是按照特定的顺序排列的,只是简单的把对象加入到集合中,但Set集合中不能包含重复对象,Set集合包括Set接口和Set接口的实现类

Set接口

Set接口继承与Collection接口,包含Collection接口的所有方法

Set接口的实现类

Set接口常用的实现类有HashSet类和TreeSet类
HashSet:此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持,它不保证Set的迭代顺序,特别是不保证该顺序恒定不变,此类允许使用null元素
TreeSet0:此类不仅实现了Set接口,还实现类java.util.SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,就是可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。TreeSet新增的方法如下

  • first():返回此Set中当前第一个(最低)元素
  • last():返回此Set中当前最后一个(最高)元素
  • comparator():返回对此Set中的元素进行排序的比较器,如果此Set使用自然排序,则返回null
  • headSet(E toElement):返回一个新的Set集合,新集合是toElement(不包含)之前的所有对象
  • subSet(E fromElement,E fromElement):返回一个新的Set集合,是fromElement(包含)对象与fromElement(不包含)对象之间的所有对象
  • tailSet(E fromElement):返回一个新的Set集合,新集合包含对象fromElement(包含)之后的所有对象

    Map集合

    Map集合提供的是key到value的映射,Map中不能包含相同的key,每个key只能映射一个value,key还决定了存储对象在映射中的存储位置,但不是由key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对于分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置,Map集合包括Map接口和Map接口的所有实现类

    Map接口

    Map接口提供了将key映射到值的对象,一个映射不能包含重复的key,每个key最多只能映射到一个值,Map接口的常用方法

  • put(K key,V value):向集合中添加指定的key与value的映射关系

  • containsKey(Object key):如果此映射包含指定key的映射关系,则返回true
  • containsValue(Object value):如果此映射将一个或多个映射到指定值,则返回true
  • get(Object ket):如果存在指定的key对象,则返回该对象对应的值,否则返回null
  • keySet():返回该集合中的所有key对象形成的Set集合
  • values():返回该集合中所有值对象形成的Collection集合

    Map接口的实现类

    Map接口常用的实现类有HashMap和TreeMap,建议使用HashMap类实现Map集合,因为由HashMap类实现的Map集合添加和删除映射关系效率更高。
    HashMap:此类基于哈希表的Map接口的实现,此实现提供可选的映射操作,并允许使用null值和null键,但必须保证键的唯一性,HashMap通过哈希表对其内部的映射关系进行快速查找,此类不保证映射的顺序,特别是不保证该顺序恒久不变
    TreeMap:此类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此,集合中的映射关系具有一定 的顺序,但在添加、删除和定位映射关系时,TreeMap类比HashMap类性能稍差,由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null