Java学习11 集合与映射

本文深入解析Java集合框架,包括Collection、Set、List、Map等核心接口及其具体实现类的特点与应用场景,对比不同集合类型的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关API关系结构

CollectionSetHashSet
TreeSet
ListArrayList
Vector←Stack
MapHashMap
HashTable←Properties
TreeMap
EnumerationStringTokenizer
java.util.Arrays
java.util.Collections

集合

java.util.Collection接口

  • 描述Set和List的接口
  • 通用方法:

    方法描述
    boolean add(Object o)
    boolean remove(Object o)
    int size()
    boolean isEmpty()
    boolean contains(Object o)
    void clear()
    Iterator iterator()
    Object[] toArray()返回所有元素的数组

集(Set)

java.util.Set

  • HashSet

    • 不保证集合中元素顺序,允许包含null元素
    • 不是同步的
      多线程可通过Set s = Collections.synchronizedSet(new HashSet(...));包装使用
  • TreeSet

    • 集合中的元素有序,元素必须实现Comparable接口,重写compareTo方法
      可参考TreeSet进行排序的2种方式:(1)默认按照对象的自然顺序进行排序; (2)用户自定义排序规则

    • 不是同步的
      多线程可通过SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));包装使用

自然排序

  • Comparable接口
    • public abstract int compareTo(Object obj):自然比较方法
    • 用户在重写compareTo()方法以定制逻辑时,要确保与等价性判断方法equals()保持一致

Iterator接口

  • 迭代器

    方法描述
    boolean hasNext()
    Object next()
    void remove()每次调用next只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的collection,则迭代器的行为是不确定的

列表(List)

java.util.List

  • 其他方法:

    方法描述
    void add(int index, Object element)在指定位置插入指定元素
    Object get(int index)返回指定位置的元素
    Object set(int index, Object element)用指定元素替换指定位置的元素
    int indexOf(Object o)返回指定元素第一次出现的索引;如果不包含,则返回 -1
    Object remove(int index)移除指定位置的元素,返回所删除的对象
  • ArrayList

    • 长度可变;元素允许为null
    • 不同步,非线程安全,适合单线程环境
    方法说明
    ArrayList()
    ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表
    void ensureCapacity(int minCapacity)确保列表至少能容纳最小容量参数所指定的元素数
    void trimToSize()将实例容量调整为列表的当前大小
  • Vector

    • Vector是同步(线程安全)的,运行效率比ArrayList低一些,主要用于多线程环境
  • Stack

    • 继承了Vector类
    • 后进先出
    方法说明
    Stack()
    Object push(E item)压栈
    Object pop()出栈
    Object peek()查看栈顶
    boolean empty()
    void clear()
    int search(Object o)返回对象在堆栈中的位置(最靠近栈顶),以 1 为基数

映射

java.util.Map

  • 主要方法:

    方法描述
    Object put(Object key, Object value)
    Object get(Object key)返回指定键所映射的值;如果不包含,返回 null
    boolean containsKey(Object key)
    boolean containsValue(Object value)
    Set keySet()返回映射中包含的的Set视图
    Collection values()返回映射中包含的的Collection视图
  • HashMap

    • 不保证元素顺序,允许使用null键和null值
    • 不同步,只适用单线程环境
    • 影响HashMap性能的两个参数:
      • 初始容量(Initial Capacity)
      • 加载因子(Load Factor):百分比;如容量为16,加载因子为0.75,当数量超过16*0.75=12个时,底层会调用相关方法扩容,如翻倍
  • HashTable

    • 不允许null键和null值
    • HashTable是同步的(线程安全),但效率相对较低,适用于多线程环境下

Enumeration接口

java.util.Collections类

  • 定义了多种集合操作方法,包括排序、取极值、批量拷贝、批量转换、循环移位、匹配性检测等功能

    方法说明
    void shuffle(List list)扑克牌打乱排序

java.util.Arrays类

  • 定义了多种数组操作方法,包括排序、填充、转化为列表或字符串、增强的检索、深度比较等

    方法说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值