Java——容器和泛型

集合类:List Set Queue Map (容器类):解决数组长度固定的问题
在这里插入图片描述
在这里插入图片描述

列表List:关心的是索引(有序)

  1. 特点
    • 对象按照索引存储
    • 可以存储重复元素
    • 具有与索引相关的一套方法
  2. 主要实现类
  • ArrayList:动态数组
    • 快速迭代,少量插入元素
  • LinkedList:链表
    • 迭代速度慢,快速插入删除
  1. ArrayList
  • 动态数组,动态的增加和减少元素,可以灵活的设置数组的大小
  • 构造
    • ArrayList():构造一个初始容量为10的空链表
    • ArrayList(int init):构造一个具有初始容量的空列表
    • List<E> list = new ArrayList<E>();(常用向上转型,E为包装器类)
    • ArrayList<E> list = new ArrayList<E>();
  • 方法:
    • add(E e):将指定的元素添加到此列表的尾部
    • add(int index,E element):添加到指定位置
    • remove(int index):移除此列表中指定位置上的元素
    • get(int index):返回指定位置上的元素
    • set(int index,E element):替代指定位置上的元素
    • size():返回此列表中的元素个数
  1. LinkedList
  • 双向链表
  • 构造方法:
    • LinkedList()
    • LinkedList(Collection<? extends E> c):构造一个包含指定 collection 中的元素的列表
  • 方法:(同ArrayList)

Set 集:关心唯一性

  1. 特点:无序,不重复
  2. 主要实现类
  • HashSet:使用被插入对象的Hash码
  • LinkedHashSet:有序的HashSet
  • TreeSet:二叉树结构,保证元素按照自然顺序进行升序排序
  1. HashSet
  • 基于HashMap实现的,HashSet底层采用HashMap来保存所有元素
  • 不允许重复
  • 无序
  • 方法
    • add(E,e);
    • clear();移除所有元素
    • remove(Object o),若存在,则移除
    • size():返回set中元素的数量(set的容量)
    • isEmpty():判断是否为空
  1. TreeSet(树集)
  • 数据插入后会自动排序
  • 操作较慢(迭代器总是以排好序的顺序访问每个元素)
  • 方法
    • add(E e)
    • remove(Object o)
    • first():返回第一个元素(最低)
    • last():返回最后一个元素(最高)
    • isEmpty()
    • size()
  1. LinkedHashSet
  • 在HashSet的实现上添加了Linked的支持,在每个结点上通过一个链表串联起来,有确定的顺序。适用于有常量复杂度的高效性存取性能要求,同时又要求排序的情况
  • 继承于HashSet,又基于LinkedHashMap来实现
  • 方法:继承HashSet
  1. 三个类的比较
  • HashSet
    • 不能保证元素的排列顺序,顺序有可能发生变化(无序)
    • 不同步,集合元素可以是null,但是只可以有一个null
    • 哈希表是通过使用成为散列法的机制来存储信息,元素并没有以某种特定顺序来存放
  • LinkedHashList
    • 有序(元素的插入顺序),允许以插入的顺序在集合中迭代
    • 遍历性能比HashSet好,插入时性能较差
  • TreeSet
    • 提供一个使用树结构存储Set接口实现,对象以升序顺序存储,访问和遍历的时间快

Queue

  1. 特殊的线性表,front删除,rear插入
  2. 继承了collection接口
  3. LikedList实现了Queue接口
  4. 方法
  • add(E e):若队列已满,则抛出异常
  • remove():移除并返回队头元素,失败时抛出异常
  • element():返回队头元素
  • offer(E e):添加一个元素并返回true,若队列已满,则返回null
  • poll():移除并返回队头的元素,若队列为空,返回null
  • peek():返回队头元素,若队列为空,则返回null
  • put(E e):添加一个元素,若已满,则阻塞
  • take():移除并返回队头元素

Map

  1. 映射(Map)
  • 对象以键值对存储(key—value
  • key不允许有重复,value允许有重复
  1. Map中元素,可以将key序列,value序列单独抽取出来
  • 使用**keySet()**抽取key序列,将map中所有的keys生成一个Set
  • 使用**values()**抽取value序列,将map中所有的values生成一个Collection
  1. HashMap
  • 基于哈希表的Map接口实现
  • 非线程安全
  • 使用方法
    • Object put(K key,V value)
    • Object get(Object K)
    • containsKey(Object k)
    • containsValue(Object v)
  • 遍历HashMap(增强for循环)
  1. TreeMap
  • 基于红黑树的实现
  • 按照元素的自然顺序排序
  1. LinkedHashMap
  • HashMap的ordered版本(有序)

迭代器(Interator)

  1. 轻量级对象
  2. 被Collection继承
  3. 功能:用于对容器的遍历
  4. 方法
  • hasNext():判断是否有可以迭代的元素
  • next():返回当前元素,并返回下一个元素
  • remove():从迭代器指向的集合中移除迭代器返回的最后一个元素

泛型

  1. 增强代码的通用性,避免强制类型转换
  2. 只接受引用数据类型作为类型参数
  3. 语法
  • class 名称 <泛型列表>
  • class ArrayList
发布了33 篇原创文章 · 获赞 5 · 访问量 685

猜你喜欢

转载自blog.csdn.net/u013140841/article/details/103878702