13.集合

1. 集合概述

可以储存任意长度,任意引用类型数据的容器

2. 集合框架
  1. Collection接口

    List、Set的父接口,无序,可重复

    常用方法

    1. int size(); // 获取集合中对象的个数
    2. boolean isEmpty(); // 判断集合是否为空
    3. boolean contains(Object o); // 判断某元素是否存在
    4. Iterator<E> iterator(); // 迭代器支持遍历
    5. boolean add(E e); // 添加
    6. boolean remove(Object o); // 删除
    7. void clear(); // 清空
    
  2. List接口

    有序,可重复

    常用方法

    1. void add(int index, E element); // 按照索引添加
    2. E remove(int index); // 按照索引删除 
    3. E set(int index, E element); // 修改元素 只有在有泛型时才能调用
    4. E remove(int index); // 删除元素
    5. int indexOf(Object o); // 获取指定元素的下标
    6. int lastIndexOf(Object o); // 获取指定元素最后一次出现的下标
    
  3. Set接口

    无序,不重复

  4. Map接口

    Map接口与Collection接口无关

    键值对唯一,键 值都无序,值可重复,键不可重复

    常用方法

    1. boolean containsKey(Object key); // 判断是否存在某值
    2. boolean containsValue(Object value); // 判断是否存在某键
    3. V get(Object key); // 通过键获取值
    4. V put(K key, V value); // 添加键值对
    5. V remove(Object key); //删除键
    6. Set<K> keySet(); // 获取所有的键 存入并返回一个Set集合
    7. Collection<V> values(); // 获取所有的值,存入并返回一个集合
    
  5. 实现类

    1. List:ArrayList,LinkedList,Vector

    ArrayList:数组集合,遍历速度快,但是随机插入或删除数据操作复杂,线程不安全

    Vector:数组集合,速度慢,线程安全,随机插入或删除操作复杂

    LinkedList:链表集合,遍历速度慢,随机插入或删除操作方便

    LinkedList新增方法

    1. addFirst(Object) // 头部添加
    2. addLast(Object) // 尾部添加
    3. removeFrist(Object) // 头部删除
    4. removeLast(Object) // 尾部删除
    5. getFrist(Object) // 返回链表头
    
  6. getLast(Object) // 返回链表尾

    
    
    2. Set:HashSet,TreeSet
    
       1. HashSet可以存入null
    
       2. TreeSet需要排序
    
          1. ````java
             // 自然排序
             1. 实体类实现Comparable
             2. 重写compareTo方法 负数倒序,正数正序
    
      2. ````java
         // 排序器排序
         1. 创建排序器类 实现Comparator接口
         2. 重写compare方法
         ````
    
      > List,Collections中的sort方法也可以用来排序,比较方便
    
  7. Map:HashMap,TreeMap,Hashtable

    1. HashMap 键,值 无序,键值对唯一,键不可重复,值可以重复,线程不安全,可以存null
    2. Hashtable 线程安全,不可以存null
  8. 算法类Collections

    java.util.Collections有许多实用的方法

  9. 集合泛型

    JDK5中提出泛型

    优点:提高代码安全性

  10. Queue类

    队列,先进先出,它的实现类有LinedList

    抛出异常 返回特殊值
    插入 add(e) offer(e)
    移除 remove() poll()
    检查 element() peek()
  11. Stack类

    public class Stack  extends Vector{}
    

    Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作

1. Vector初始容量10,2倍扩容
2. ArrayList初始容量10,1.5倍扩容
3. String,包装类都重写了compareTo方法
4. HashMap初始容量16,满75%自动扩容2倍
5. Tree有关的集合都不能存null,Hashtable安全性问题不能存null
posted @ 2021-05-13 21:30  因心光  阅读(39)  评论(0编辑  收藏  举报