• Java集合框架总结


    一、Java集合框架简介及其关系图

      Java集合框架的作用:为了方便高效操作对象,将对象放入容器中,统一管理。数组也是一种简单的容器,集合框架的容器是比较复杂的容器。

    其中包含的具体的集合类,对于特定类型的操作具有不同的效率,选择那个容器类型,要根据具体的操作选择。

    注意:位于java.util包里面的接口类几乎都是非线程安全的,线程安全的集合位于java.util.concurrent包里面。

      Java集合框架中类的组织方式:总接口-->子接口-->抽象类-->具体集合类。在接口中定义行为,在具体的集合类中定义具体操作的实现。

      Java集合框架中常用的接口和具体的集合类:Collection接口----Set接口----List接口,Map接口;常用的具体类:ArrayList   LinkedList

    TreeSet  HashSet  LinkedHashSet  TreeMap HashMap HashTable LinkedHashMap;以及用于遍历集合元素的接口Iterator;用于定义比较

    的接口:Comparator和Comparable;以及便利的工具类:Collections和Arrays。

    二、Java集合框架中常用接口介绍

      1.Collecttion接口:定义了除了Map相关的集合的共性操作:另外其继承了Iterable接口,继承其方法:iterator()--Iterator<T>

      Collection接口常用方法:

      a. boolean add(E e):向集合中添加元素  boolean addAll(Collection<? extends E> c):向该集合中添加另一个集合中的所有元素

      b. void clear():清除该集合中的所有元素

      c. boolean contains(Object o):判断集合中是否包含指定对象  boolean containsAll(Collecttion<?> c):判断集合中是否包含另一个集合

      d. boolean equals(Object o):判断集合是否与指定集合相等  int hashCode():返回该集合的哈希值

      e. boolean isEmpty():判断集合是否为空  int size():返回集合中的元素个数

      f. Iterator <T> iterator():返回在该集合中元素进行迭代的迭代器

      g.boolean  remove(Object o):删除集合中指定的元素 boolean removeAll(Collection<?> c):删除该集合中和指定集合相同的元素

      h. boolean retainAll(Collection<?>):保留该集合和指定集合中相同的元素

      i. Object[] toArray():返回包含该集合所有元素的数组  T[] toArray(T[] t):将集合元素放入指定类型的数组,并返回该数组

      注意:判断包含是根据对象的内容判断的

    1 //必须先调用next()在调用remove();因为指针在元素前面,删除的是指针位置前面的一个元素
    2         Iterator<String> it = c.iterator();//迭代集合中的元素
    3         while(it.hasNext()){
    4             it.next();
    5             it.remove();
    6         }

      2.Iterator接口:定义迭代集合中元素的方法

      a. boolean hasNext():判断集合中是否还有元素

      b. E next():返回集合中的下一个元素

      c. boolean remove():删除迭代器上一个迭代的元素

      3.List接口:继承Collection接口序列,元素之间按照加入集合的次序存在先后的次序关系,操作类似于数组,但是长度可变

      允许添加相同内容的元素List中的方法增加了许多利用下标进行操作的方法

      a. boolean add(int index, E e):在指定的位置添加元素  boolean containsAll(int index, Collecttion<?> c):在指定的位置加入某集合的元素

      b. int indexOf(Object o):返回指定对象在序列中的下标  E get(int index):返回指定下标的元素 void set(int index, E e):设置指定的位置元素

      c.ListIterator listIterator():返回一个序列迭代器,序列迭代器运行在迭代的时候,进行添加元素,设置元素,同时运行向前向后遍历序列

      d.List<E> subList(int fromIndex, int toIndex):返回该序列的子序列--包含开始,不包含接收下标

      3.Set接口:继承Collection其含义类似数学的集合,集合中不允许存在相同的元素,打印集合的时候是按照随机的顺序打印。未定义新的方法。

      4.Map接口:存储的是一组键值对,Key-Value,注意key的内容不允许相同,每个Key只允许映射一个Value。Map常见的方法

      a. V put(K key, V value):将一组键值对存入Map里边,并返回原来该键对应的值

      b. Collection<V> values():将该映射关系所有的值放入集合并返回

      c. Set<K> keySet():将此映射关系的所有的值放入一个集合并返回

      d. Set<Map.Entry<k,v>> entrySet():返回包含该映射关系的集合

      e. boolean containsKey(Object key)/containsValue(Object value):判断包含特定键或值

    三、集合框架中常用类的介绍

      1.ArrayList:是List接口的一种具体的实现,底层是用数组实现的,它和数组的最大的不同就是,数组的长度,会根据需要扩展,在将原来

    数组的内容复制到拥有较大容量的新数组里面,通过这种方式实现动态数组概念。数组的复制是通过System.arrayCopy()实现的,该方法调用

    的是本地方法。默认是10,每次扩大先按照1.5倍扩展。ArrayList的特点其实和数组类似,支持随机访问,对于数据量大且要频繁进行添加和

    删除的操作,需要进行频繁的数据移动。ArrayList在实现迭代的时候定义一个内部类实现Iterator接口,以及另一个更方便的迭代的具体类

    内部类,是通过继承Iterator接口的具体类,并实现ListIterator接口。

      2.LinkedList:是List接口的另一种实现,其底层是用双链表实现的,链表的特点:对于插入和删除操作很方便只需要修改几个指针的指向

    对于查找的效率不是特别好。LinkedList的常用方法:主要特殊操作方式是针对头和尾巴的操作。其实现了List接口、Dequue接口、Queue接口。

      add(E e )  addFirst/Last() 以及针对下标的操作类似于ArrayList,getFirst/Last() removeFirst/Last() descendingIterator()--逆序迭代。

      3.HashSet:是Set接口的一种实现,其底层实现是链表数组实现的,根据对象的哈希值进行划分。

      4.TreeSet:是Set接口的一种实现,底层实现是用的红黑树,其最大的特点可以针对元素进行排序之类的操作。

      5.HashMap和TreeMap:散列映射对键进行散列,树映射利用键的整体顺序对元素进行排序,包含许多针对次序相关的操作。

      

      

  • 相关阅读:
    Gridview鼠标移动到数据行时改变该数据行的背景色
    利用SQL或存储过程实现GridView分页
    ObjectDataSource“odbList”未能找到接受“MyBookShop.Model.Admin”类型的参数的非泛型方法“DeleteAdmin”。
    Apache服务器主配置文件全中文注释
    MVC简介
    MOSS 2007 部署Feature脚本
    在线视频点播
    yui 与 jQuery
    解决MOSS2007 单点登陆 设置错误“您没有执行此操作的权限”
    【转发】外企面试常用的英文问题及高分回答
  • 原文地址:https://www.cnblogs.com/sun1993/p/7856399.html
Copyright © 2020-2023  润新知