Java之集合

Java集合分类

  1. Java集合主要分类两类:
    1. Collection集合
    2. Map集合
  2. Collection集合分类:
    1. Set集合:代表无序,不可重复的集合
    2. List集合:代表有序,可重复的集合
    3. Queue集合:代表一种队列集合实现
  3. Map集合分类:
    1. HashMap集合
    2. TreeMap集合
    3. HashTable结合 
  4. 集合与数组的区别:
    1. 长度区别:
      1. 数组固定长度
      2. 集合长度可变
    2. 内容区别:
      1. 数组可以存储基本类型数据,也可以是引用类型数据
      2. 集合只能是引用数据类型
    3. 元素区别:
      1. 数组只能存储一种数据类型
      2. 集合可以存储不同数据类型(集合一般存储的也是同一数据类型)

List集合:

  1. 特点:
    1. 有序性:List 保证按插入顺序排序
    2. 唯一性:List 可以重复
    3. 获取元素:List 可以通过索引直接操作元素
  2. List 集合的分类:
    1. ArrayList 集合
    2. LinkedList 集合
    3. Vector 集合(不建议使用)

ArrayList集合:

  1. 特点:
    1. ArrayList 是集合的一个实现类
    2. ArrayList 内部封装了一个 Object 类型的对象,初始长度是10,长度可变
    3. ArrayList 集合查询快,增删慢
    4. 线程不安全
  2. 方法:
    1. add(Object  element):向列表的尾部添加指定的元素
    2. add(int i,Object  element):在列表的指定位置插入值
    3. size():返回列表中的元素个数
    4. get(int  index):返回列表中指定位置的值,index 下标从 0 开始
    5. set(int i,Object  elelment):替换 i 的位置的值为 element
    6. clear():从列表移除所有元素
    7. isEmpty():判断列表是否为空
      1. 为空返回 true
      2. 不为空返回 false
    8. contains(Object o):查询列表是否包含指定元素
      1. 包含返回 true
      2. 不包含返回 false
    9. remove(Object  o):从列表中移除第一次出现的指定元素
      1. 移除成功返回 true
      2. 移除失败返回 false
    10. iterator():返回按当前顺序在列表的元素上进行迭代的迭代器
      1. hasNext():判断当前指针下是否还有元素
      2. next:如果指针下面还有元素,则获取值并返回
    11. 增强 for 循环:遍历链表

LikedList集合

  1. 特点:
    1. LikedList 是集合的一个实现类
    2. 内部封装了一个双向链表
    3. 增删快,查询慢
    4. 线程不安全
  2. 方法:
    1. 添加:
      1. add(Objedct element):将元素添加至列表尾部
      2. add(int index,Objedct element):指定位置插入元素
      3. addFirst(E  element):将元素添加至列表头部
      4. addLast(E  element):将元素添加至列表尾部
    2. 获取数据:
      1. get(int  index):根据下标获取数据
      2. getFirst():返回链表第一个数据
      3. getLast():返回链表最后一个数据
    3. 查询:
      1. contains(Object  element):元素如果存在,返回ture
    4. 修改:
      1. set(int  index,Object  element):将新元素替换列表中的现有元素(从下标 0 开始)
    5. 删除:
      1. remove():删除链表第一个元素
      2. remove(int  index):删除指定下标的值
      3. removeFirst():删除链表第一个元素,并返回该值
      4. removeLast():删除链表最后一个元素,并返回该值
    6. 清空:
      1. clear():清空列表所有元素
    7. 链表长度:
      1. size():返回链表的长度

Vector集合(不建议使用):

  1. 特点:
    1. 底层数据结构是:数组
    2. 有索引、查询快、增删慢
    3. 单线程、线程安全

Map集合

HashMap集合:

  1. 示意图:
  2. 特点:
    1. 底层由 链表 + 数组 构成,JDK8 以后加了 红黑树
    2. 存储的是 key + value 类型的数据
    3. key 值不允许重复
      1. key 值重复会把数据覆盖
    4. value值可以重复
    5. 数据存储无序:
      1. 无序:插入顺序和取出顺序不一样
    6. key 和 value 都允许为空,但是只能有一个空的 key
  3. 方法:
    1.  put(K  key,V  value):将 键(Key) / 值(Value) 映射存放到 Map 集合中
    2. get(Object  key):返回指定键的值
      1. 没有该键返回 null
    3. size():返回 Map 集合中数据的数量
    4. clear():清空 Map 集合
    5. isEmpty():判断 Map 集合是否为空
      1. 为空返回 true
      2. 不为空返回 false
    6. remove(Object  key):删除 Map 集合中指定的键的数据,并返回其所对应的 value 值
    7. containsKey(Object  key):判断 HashMap 中是否含有 key 键
    8. containsValue(Object  value):判断 HashMap 中是否含有 value 值
    9. putAll(HashMap  h1):添加一个同类型 h1 下的所有数据
    10. replace(Object  key,Object  value):替换指定键的 value 值
  4. HashMap<Integer,String> h1 = new HashMap<>();
    HashMap<Integer,String> h2 = new HashMap<>();
    
    h1.put(3,"111");
    h1.put(1,"222");
    h2.put(0,"333");
    
    //将h2中的所有数据添加之h1
    h1.putAll(h2);
    
    System.out.println(h1); //{0=333, 1=222, 3=111}

TreeMap集合:

  1. 特点:
    1. TreeMap集合是一个有序的 key-value 集合,是通过红黑树实现的(是一种平衡的二叉树)
    2. key值是有序的
    3. 默认会对键进行排序,键必须实现自然排序或制定排序中的一种
      1. 自然排序:按照字典表进行排序
      2. 定制排序:自己定义排序规则
    4. 线程不安全
  2. 基本使用:
    1. 使用无参构造器创建对象:
      1. 对于 Integer 来说,其自然排序就是数字的升序
      2. 对 String 来说,其自然排序就是按照字母表排序
    2. Comparable接口:
      1. 使用 TreeMap 时,放入的 Key 必须实现 Comparable 接口
      2. String、Integer 这些类已经实现了 Comparable 接口,因此可以直接作为 Key值使用
      3. value 的对象没有任何要求

HashTable集合:

  1. 特点:
    1. HashTable 是 Map 的实现类
    2. 不允许有任何 null 值 和 null 键
    3. HashTable 中的元素没有顺序(和添加舒徐无关)
    4. HashTable 线程安全
    5. 底层实现是 哈希表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值