Java常用API-集合框架

186 阅读3分钟

1.为什么要有集合框架?

  • 开发项目最核心:数据 ----需要解决数据存储问题
  • 当下存储方式的转变:
    • 直接使用 ------> 共享 ------> 变量(无法满足大量数据存储的要求)------> 数组 / 对象
  • 数组的问题:
    • 1)基本类型操作数据方式——通过数组名+索引号的方式提取数据,与面向对象思想不符
    • 2)固定长度——极易造成空间浪费或空间不足
    • 3)同一类型——一个数组内只能存同类型的数据
  • 为了解决数组的问题,创建了——集合框架

2.集合框架

  • 1)Java提供的集合API 包:java.util

    • 三个接口(不是类):Collection,Map,Iterable(接口初始容量16)
    • 一个类:Collection
  • 2)Collection接口:集合层次的根接口,用于存储对象,其后代也是接口,没有类直接实现

    • 使用:Collection是接口无法直接使用,故需要使用其子接口(List接口和Set接口为重点)

    • List接口:实现了集合中有序,可重复,可为空的特性

    • 其提供了很多子类--通过不同的方式去实现

      • Vector【基本淘汰】——实现增长的对象数组,实现对象的存储、移除、搜索,内部数组实现数据存储,是线程安全,同步
      • ArrayList【整体】——大小可变的数组,功能上等同于Vector,此类是不同步的,在不考虑安全时Arraylist用于替代Vector
      • LinkedList【分散联合成整体】——使用双向链表的方式实现列表,是不同步的
    • *list集合中的问题探索:

      • 1.遍历集合中的数据

        • 1)常规的for循环

        • 2)使用实现迭代器接口功能iterable--每一个集合中都有一个方法iterator()用于获取迭代器,迭代中有方法用于获取数据

        • 3)增强for循环 foreach

          • 语法:for(元素类型 临时变量:集合){}
      • 2.有序 重复 null值探索

        • //遍历方式使用迭代器

        • //获取当前集合的迭代器

        • Iterator iter=srrlist.iterator();

        • //使用迭代器迭代

        • while(iter.hasNext()){
          
          //获取下一个
          
          syso(iter.next());
          
          }
          
      • ***LinkedList:

        • add是以队列形式(从集合的最后加数据)

        • push是以压栈形式(从集合的最前加数据)

    • Set接口:(见下文)

​ 3)List接口--数据类型的问题

  • 没有指定数据类型的时候:可以向集合中存储任意数据——默认存储的数据类型是Object
  • 带来问题:存储多种类型数据时,使用时无法辨别集合中对应数据的类型
  • 解决办法:使用一种技术处理对象存储数据类型的问题——泛型
    • 泛型概念:参数化,模糊类型,具体的类型让使用者自己定义
    • 泛型对应的类型必须是类(而不是基本类型,如int)--集合中只能存储对象

​ 4)set集合

  • 1.概念:不包含重复元素,包含一个null值
  • 2.子类:HashSet和TreeSet
  • 3.HashSet子类
    • 不重复,无序,HashMap实现,不同步
    • 哈希表进行数据存储,所以不能使用索引去处理
    • 去重方式:去掉前面的,保留后面的
  • 4.TreeSet子类
    • 不重复,自动排序,TreeMap实现,不同步
  • 5.set集合的总结
    • 是使用map集合实现,它出现的原因也是Map
  • 主要功能:
    • 存储数据,无法单独取出数据,只能遍历数据,因为无法排定对应数据的位置
    • 可以删除数据
    • 可获取大小
  • 附加功能:
    • 去重
    • 排序【自然顺序】

​ 5)Map集合

  • 1.概念:将键映射值的对象,键不可以重复,一个键只能映射一个值
    • 允许为空
    • 值允许重复
    • 是一个接口,用于存储
  • 2.子接口
    • HashMap,TreeMap
  • 3.HashMap
    • 哈希表的实现方式
      • 键值对的存储
      • 允许key和value都为null
    • 无序
  • 4.map集合遍历--转化成set集合--通过set集合去遍历
  • 5.TreeMap--多了一个排序【对key进行自然顺序排序】