集合结构体系

集合体系结构

  • collection单链集合:是单列集合的祖宗接口,他的功能是所有单列集合可以继承使用的

  • 创建collection对象

    Collection<String> coll=new ArrayList<>();//学习阶段才创建的collection中的arraylist
    
    方法名称 说明
    boolean add() 集合中添加指定元素
    void clear() 清空集合中所有元素
    boolean remove() 删除集合中给定的对象
    contains() 判定对象集合中是否有给定的对象
    isEmpty() 判断当前集合是否为空
    int size() 返回集合中的元素个数
    • list集合,添加元素是有索引的,可重复,有序
    • set集合,添加元素无索引,不重复,无序的
  • map双链集合

collection集合:

  • collection的遍历方式

    • 创建迭代器对象:

      coll.iterator()
      
    • 迭代器遍历

      • 迭代器不依赖索引

      • 迭代器在Java中的类是iterator,迭代器是集合专用的遍历方式

      • 注意事项:

        • 报错NoSuchElementException:没有元素异常
        • 迭代器遍历完指针不会复位
        • 循环中只能用一次net方法
        • 迭代器遍历时,不能用集合的方法进行增加或者删除
      • 迭代器在中常用的方法:

      方法名称 方法说明
      hasNext(); 判断当前位置是否有元素,有为true无为false
      next(); 获取当前迭代器指针的元素,向下移动指针
    • 增强for遍历

      • 底层就是迭代器,为了简化迭代器的书写而形成的
      • 使用范围:单列集合,数组
      • 细节:修改增强for遍历的变量,不会改变集合中原本的数据
    • lambda遍历

      • 更简单的更直接的遍历集合的方法
      方法名称 说明
      default void forEach(Consumer action): 结合lambda遍历集合

list集合:

  • 添加元素是有序的可重复的有索引的

    • 添加元素,添加到指定位置,原来索引上的元素往后面移动
    • 删除元素remove。删除指定元素的索引且返回删除的元素,在删除元素优先删除类型一致的
    • 修改元素,修改指定索引地方的元素,且返回被修改的元素
    • 获取指定索引的元素,get(i)
  • list 遍历方式

    • 迭代器遍历
    • 列表迭代器遍历
    • 增强for循环遍历
    • lambda遍历

遍历方式的对比:

  • 迭代器:在遍历过程中需要删除元素
  • 列表迭代器:在遍历过程中,需要添加元素
  • 增强for:仅仅遍历
  • lambda:仅仅遍历
  • 普通for:遍历操作索引,可以用普通for遍历

实现类的学习:

arraylist
linkedlist
vector

Arrayslist集合:

  • 底层原理:
    • 是一个数组结构,数组:elementData,和一个指针size,size包括数组的长度,和下次存入元素的位置构成。
    • 利用空参创建的集合,在底层创建一个长度为0的数组
    • 在添加元素时,在添加元素时会创建一个长度为10的数组(elementData),其数组元素的初始化值为null
    • 长度为10的数组被存满之后,会自动扩容为原来的1.5倍
    • 如果一次添加的元素特别多1.5倍放不下,数组的长度以实际为准

linkedlist集合:

  • 底层原理:底层时双链表结构的,查询慢,删除快,如果操作的是首位元素也是很快的

-

  • linklist有很多直接操作首位元素的特有api
特有方法 说明
addFirst() 该列表开头添加指定元素
addLast() 添加元素到此列表的末尾
getFirst() 返回列表第一个元素
getLast() 返回列表最后一个元素
removeFirst() 列表删除并返回第一个元素
removeLast() 列表删除并返回最后一个元素

总结

在以后,如何避免并发修改异常,在使用迭代器,或者增强for遍历的过程中,不要使用集合的方法来添加或者删除元素

你可能感兴趣的:(java,java)