代码改变世界

Java集合类

2020-02-23 23:03  默默不语  阅读(239)  评论(0编辑  收藏  举报

如今经常用到Java中的各种集合类,所以特地在网上学习了一下Java的几种集合类,总结在这篇博客中。

首先。集合是Java SE API所提供的一系列类(java.util包内)的实例,可以用于动态存放多个对象,便于我们操作。

1.Collection接口

  Collection接口声明了一组管理它所存储元素的方法。其中常用子接口有:

    Set接口:存放的元素不包含重复的集合接口(元素无序且不重复).

    List接口:存放的元素有序且允许有重复的集合接口。

  Collection接口中定义的方法有:

    int size(): 返回此collection中的元素数。

    boolean isEmpty():判断此collection中是否包含元素。

    boolean contains(Object obj):判断此collection是否包含指定的元素。

    boolean contains(Collection<?> c): 判断此collection是否包含指定collection中的所有元素。

    boolean add(E element):向此collection中添加元素。

    boolean addAll(Collection<? extends E> c):将指定collection中的所有元素添加到此collection中。

    boolean remove(Object element):从此collection中移除指定的元素。

    boolean removeAll(Collection<?> c):移除此collection中那些也包含在指定collection中的所有元素。

    void clear():移除些collection中所有的元素。

    boolean retainAll(Collection<?> c):仅保留此collection中那些也包含在指定collection的元素。

    Iterator iterator():返回在此collection的元素上迚行迭代的迭代器。

    T[] toArray(T[] arr):把此collection转成数组。

  Set接口

    Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的(重复:两个对象equals()相等)。常用的有:HashSet和  LinkedHashSet。

     HashSet不保存元素的存入顺序, LinkedHashSet根据元素的哈希码进行存放,同时用链表记录元素的加入顺序。Set集合存、取、删对象都有很高的效率。但对于要存放到Set集合中的对象,对应的类一定要重写equals()和 hashCode(Object obj)方法以实现对象相等规则。

  List接口

    List接口的集合类中的元素是有序的,且允许重复。List集合中的元素都对应一个整数型的序号记载其在集合中的位置,访问时可以根据序号存取集合中的元素。常用的有:ArrayList和LinkedList。

    ArrayList是使用数组结构实现的List集合,对于使用索引取出元素有较好的效率,但元删除或插入元素速度较慢。

    LinkedList是使用双向链表实现的集合,对频繁的插入或删除元素有较高的效率。

    List接口比Collection接口新增了几个实用方法:

      public Object get(int index) :返回列表中的元素数。

      public Object add(int index, Object element):在列表的指定位置插入指定元素,将当前处于该位置的元素和所有后续元素向右移动。

      public Object set(int index, Object element):用指定元素替换列表中指定位置的元素。

      public Object remove(int index) :移除列表中指定位置的元素。

      public ListIterator listIterator():返回此列表元素的列表迭代器。

2.Map接口

  Map实现类中存储的“键-值”映射对是通过键来唯一标识,Map底层 的“键”是用Set来存放的,所以,存入Map中的映射对的“键”对应的类必须重写hashcode()和equals()方法。 常用String作为Map的“键”。常用的有:HashMap和LinkedHashMap。

  HashMap内部使用哈希表对 “键-值”映射对 迚行散列存放,是使用频率最高的一个集合。

  LinkedHashMap是HashMap的子类,它使用哈希表存放映射对 ,用链表记录映射对的插入顺序。

  Map接口中定义的一些常用的方法:

    Object  put(Object key, Object value):将指定的“键-值”对存入Map中。

    Object  get(Object key):返回指定键所映射的值。

    Object  remove(Object key):根据指定的键把此“键-值”对从Map中移除。

    boolean  containsKey(Object key):判断此Map是否包含指定键的“键-值”对。

    boolean  containsValue(Object value):判断是否包含指定值的“键-值”对。

    boolean  isEmpty():判断此Map中是否有元素。

    int  size():获得些Map中“键-值”对的数量。

    void  clear():清空Map中的所有“键-值”对。

    Set  keySet():返回此Map中包含的键的Set集。

    Collection values():返回此Map中包含的值的Collection集。

    Set<Map.Entry<K,V>> entrySet():返回此Map中包含的“键-值”对的Set集。