zoukankan      html  css  js  c++  java
  • 集合框架

    1.集合框架概述
     1.引入集合框架
      采用数组存在的一些缺陷:
       1.数组长度固定不变,不能很好地适应元素数量动态变化的情况。
       2.可通过数组名.length获取数组的长度,却无法直接获取数组中真实存储的个数。
       3.在进行频繁插入、删除操作时同样效率低下。
     2.Java集合框架包含的内容
      Java集合框架为我们提供了一套性能优良、使用方便的接口和类,它们都位于Java.util包中。
      集合框架是为表示和操作集合而规定的一种统一的标准体系结构。集合框架都包含三大块内容;对外的接口、接口的实现和对集合运算的算法。
       1.接口
       2.实现
       3.算法
      Java集合框架中的两大类接口:Collection和Map。其中,Collection又有两个子接口:List和Set。所以通常说Java集合框架共有三大类接口:List、Set和Map。它们的共同点:都是集合接口,都可以用来存储很多对象。它们的区别如下:
       1.Colection接口存储一组不唯一(允许重复)、无序的对象。
       2.Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。
       3.List接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。
       4.Map接口存储一组成对的键-值对象,提供key到value的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,但允许重复。
       5.Iterator接口是负责定义访问和遍历元素的接口。
    2.List接口
     实现List接口的常用类有ArrayList和LinkedList。它们都可以容纳所有类型的对象,包括null,允许重复,并且都保证元素的存储顺序。
     ArrayList对数组进行了封装,实现了对象可变的数组。ArrayList存储数据的方式和数组相同,都是在内存中分配连续的空间。它的优点在于遍历元素和随机访问元素的效率比较高。
     LinkedList采用链表存储方式,优点在于插入、删除元素时效率比较高。它提供了额外的addFirst()、addLast()、removeFirst()和removeLast()等方法,可以在LinkedList的首部或尾部进行插入或删除工作。这些方法使得LinkedList可被用作堆栈或者队列。
     
     1.ArrayList集合类
      总结一下List接口中定义的各种常用方法(也是ArrayList的常用方法)
        List接口中定义的各种常用方法
      方法名称   说明
     boolean add(Object o)  在列表末尾顺序添加元素,起始索引位置从0开始
     
     void add(int index,Object o)    在指定的索引位置添加元素,原索引位置及其后面的元素依次后移
         注意:新添加元素的索引位置必须介于0和列表中元素个数之间
     int size()   返回列表中的元素个数

     Object get(int index)  返回指定索引位置处的元素
         注意:取出的元素是Object类型,使用前需要进行强制类型转换
     boolean contains(Object o) 判断列表中是否存在指定元素

     boolean remove(Object o) 从列表中删除元素

     Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始
     
     2.LinkedList集合类
        LinkedList的一些特殊方法
      方法名称      说明
      void addFirst(Object o)    在列表的首部添加元素
      void addLast(Object o)    在列表的末尾添加元素
      Object getFirst()    返回列表中的第一个元素
      Object getLast()    返回列表中的最后一个元素
      Object removeFirst()    删除并返回列表中的第一个列表
      Object removeLast()    删除并返回列表中的最后一个元素
    3.Map接口
     1.HashMap集合类
        Map的常用方法
      方法名称     说明
     Object put(Object key,Object value)  以"键-值对"的方式进行存储
           注意:键必须是唯一的,值可以重复。如果试图添加重复
           的键,那么最后加入的"键-值对"将替换掉原先的"键-值       队"
     Object get(Object key)    根据键返回相关联的值,若不存在指定的键,则返回       null
     Object remove(Object key)   删除指定的键映射的"键-值对"
     
     int size()     返回元素个数

     Set keySet()     返回键的集合

     Collection values()    返回值的集合

     boolean containsKey(Object key)   若存在指定的键映射的"键-值对",则返回true

     boolean isEmpty()    若不存在键-值映射关系,则返回true

     void clear()     从此映射中移除所有映射关系

      Hashtable和HashMap的异同:P159
    4.迭代器Iterator
     所有集合接口和类都没有提供相应的遍历方法,而是把遍历交给迭代器Iterator完成。Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
     Collection接口的iterator()方法返回一个Iterator,然后通过Iterator接口的两个方法即可方便地实现遍历。
      1.boolean hasNext():判断是否存在另一个可访问的元素
      2.Object next():返回要访问的下一个元素
     1.使用Iterator遍历集合类
      资料:JDK1.5加入了增强型for循环,它是for语句的特殊简化版本,我们通常称之为foreach语句,它在遍历数组、集合方面提供了极大的方便。foreach的语句格式:
       for(元素类型t 元素类型x:数组或集合对象){
        引用了x的Java语句
       }
      其中,“t”的类型必须属于“数组或集合对象”的元素类型
      
     数组和集合的主要区别包括以下几个方面:P161、P162
     
    5.泛型集合
     1.泛型集合的应用
      问答:P164、P165

  • 相关阅读:
    java程序高CPU,如何直接定位(linux系统下命令行操作)
    HashMap源码解读(jdk1.8)
    mysql索引原理
    redis常见问题
    Bitmap算法
    list遍历时删除的坑
    接口和抽象类有什么区别?各在什么场景下使用?
    记录BigInteger犯过的一个错误
    CentOS7切换源
    map遍历性能记录
  • 原文地址:https://www.cnblogs.com/fl72/p/8537354.html
Copyright © 2011-2022 走看看